Yii2 中要求按某个字段 固定值排序,比如:
Product
id | name
1 | A
2 | B
3 | C
4 | D
I want ID 3 in first position:
Product
id | name
3 | C
1 | A
2 | B
4 | D
这种情况,就可以用 上 orderBy field !如:
$orderBy = (new \yii\db\Query())
->select('*')
->from('product')
->orderBy([new \yii\db\Expression('FIELD (id, 3,1,2,4)')])
->all();
或者简化成类似这样:
if ( in_array(2, $status) ) {
$query->orderBy(["FIELD(`id`,3,2,1)"=>true, 'g.start_time'=>'asc']);
} else {
$query->orderBy(["FIELD(`id`,4,5,6)"=>true, 'g.start_time'=>'desc']);
}