Yii2:如何使用mysql在Find()的orderby()中添加两个字段和NULLS LAST

ajm*_*824 3 php mysql yii2

尝试做与此问题类似的事情,但需要对 MySQL 的 NULLS LAST 进行排序

就像是...

$query->MODEL_NAME::find(); 
$query->orderBy(['column_1' => 'IS NULL','column_1'=> SORT_DESC]);
Run Code Online (Sandbox Code Playgroud)

虽然这个语法是错误的。谢谢!

当我尝试时orderBy('column_1 IS NULL ASC, column_1 desc')出现错误

SQLSTATE[42S22]:未找到列:1054 未知列。正在执行的 SQL 是:SELECT * FROM 'table' ORDER BY 'due_date IS NULL'

注意:必须将上面错误中的反引号替换为单引号才能在此处显示。

Ali*_*lah 7

使用\yii\db\Expression

MODEL::find()
    ->where('1')
    ->orderBy(
        [
            new \yii\db\Expression('col_1 IS NULL ASC, col_1 desc')
        ]
    )
    ->all();
Run Code Online (Sandbox Code Playgroud)