使用 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();