php - Yii2:如何使用mysql在Find()的orderby()中添加两个字段和NULLS LAST
问题描述
尝试做类似于这个问题的事情,但需要为 MySQL 排序 NULLS LAST
就像是...
$query->MODEL_NAME::find();
$query->orderBy(['column_1' => 'IS NULL','column_1'=> SORT_DESC]);
虽然这种语法是错误的。谢谢!
当我尝试时,orderBy('column_1 IS NULL ASC, column_1 desc')
我得到了错误
SQLSTATE [42S22]:未找到列:1054 未知列。正在执行的 SQL 是:
SELECT * FROM 'table' ORDER BY 'due_date IS NULL'
注意:必须在上面的错误中用单引号替换反引号才能在此处显示。
解决方案
利用\yii\db\Expression
MODEL::find()
->where('1')
->orderBy(
[
new \yii\db\Expression('col_1 IS NULL ASC, col_1 desc')
]
)
->all();