Rumah > Soal Jawab > teks badan
yii ke dalam orderBy,
, kini sql yang dicetak, dan sql yang saya perlukan adalah seperti ini, sila beritahu saya bagaimana untuk menyelesaikan masalah ini, ini berdasarkan susunan mengikut medan (id, 5, 3, 8) dalam mysql . Sebagai tambahan Satu perkara, saya ingin melaksanakan pengisihan khas medan tertentu dalam rangka kerja Yii Adakah terdapat kaedah lain selain susunan mengikut medan Saya telah menyemak beberapa ralat yang disebabkan oleh simbol "`".
三叔2017-06-20 10:09:49
->orderBy(["FIELD(step, 'star', 'person', 'team')" => true])
Ia mungkin, tetapi saya tidak melihat kod asas dengan teliti. . . Tetapi ia sepatutnya menyelesaikan masalah
/**
* @param array $columns
* @return string the ORDER BY clause built from [[Query::$orderBy]].
*/
public function buildOrderBy($columns)
{
if (empty($columns)) {
return '';
}
$orders = [];
foreach ($columns as $name => $direction) {
if ($direction instanceof Expression) {
$orders[] = $direction->expression;
} else {
$orders[] = $this->db->quoteColumnName($name) . ($direction === SORT_DESC ? ' DESC' : '');
}
}
return 'ORDER BY ' . implode(', ', $orders);
}
Ini ialah kaedah untuk menjana pernyataan mengikut urutan, jadi benar tidak mempunyai kesan sebenar, tetapi ia tidak sama dengan SORT_DESC dan kemudian menjadi kosong,
Cara penulisan yang lebih rasmi adalah seperti ini:
orderBy([new Expression("FIELD(step, 'star', 'person', 'team')")])