首页 > 解决方案 > 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'

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

标签: phpmysqlyii2

解决方案


利用\yii\db\Expression

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

推荐阅读