簡體   English   中英

Yii2高級排序

[英]Yii2 advanced sorting

如何在Yii2中實現以下排序:

SELECT * FROM `orders` order by case when status != 'ORDER_DONE' then 1 else 2 end,status

我想將ORDER_DONE的狀態放到底部。 任何想法?

從2.0.7版本開始,您可以將yii\\db\\Expression傳遞給orderBy()所以可以這樣:

(new \yii\db\Query)
->from('orders')
->orderBy(new \yii\db\Expression('CASE WHEN status != "ORDER_DONE" THEN 1 ELSE 2 END, status'))
->all();

要對數據提供者進行排序,請使用:

'sort' => [
    'attributes' => [
        'onlinedate' => [
            'asc' => [new \yii\db\Expression('CASE WHEN status != "ORDER_DONE" THEN 1 ELSE 2 END, status')],
            'desc' => [new \yii\db\Expression('CASE WHEN status = "ORDER_DONE" THEN 1 ELSE 2 END, status')],
        ],
    ],
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM