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