使用 orderBy()
orderBy()
方法指定 SQL 查询的 ORDER BY 片段。例如,考虑我们的 employee 表具有字段 **emp_id,emp_first_name,emp_last_name 和 emp_salary。**假设我们需要通过增加员工工资的顺序来排序结果。我们可以在 sql 如下所示。
Select * from employee order by emp_salary
在 yii2 中,我们可以构建如下所示的查询
//creates a new \yii\db\Query() object
$query=new \yii\db\Query();
$rows= $query->from('employee')->orderBy([
'emp_salary' => SORT_ASC //specify sort order ASC for ascending DESC for descending
])->all();
如果我们需要按升序排序员工的名字,然后按降序排序他们的工资,我们可以用普通的 SQL 编写如下。
Select * from employee order by emp_first_name ASC, emp_salary DESC
可以使用 yii2 构建等效的 sql,如下所示
//creates a new \yii\db\Query() object
$query=new \yii\db\Query();
$rows= $query->from('employee')->orderBy([
'emp_first_name' => SORT_ASC
'emp_salary' => SORT_DESC
])->all();
你也可以使用字符串指定 ORDER BY,就像编写原始 SQL 语句时一样。例如,也可以如下给出生成上述查询。
//creates a new \yii\db\Query() object
$query=new \yii\db\Query();
$rows=$query->from('employee')->orderBy('emp_first_name ASC, emp_salary DESC')->all();
你可以调用 addOrderBy()
以向 ORDER BY 片段添加其他列。例如
//creates a new \yii\db\Query() object
$query=new \yii\db\Query();
$rows=$query->from('employee')->orderBy('emp_first_name ASC')
->addOrderBy('emp_salary DESC')->all();