Sorting Yii2高级分拣
如何在Yii2中实现以下排序:Sorting Yii2高级分拣,sorting,yii2,Sorting,Yii2,如何在Yii2中实现以下排序: SELECT * FROM `orders` order by case when status != 'ORDER_DONE' then 1 else 2 end,status 我想把订单完成的状态放到底部。有什么想法吗?从2.0.7开始,您可以将yii\db\Expression传递到orderBy()这样做: (new \yii\db\Query) ->from('orders') ->orderBy(new \yii\db\Expressio
SELECT * FROM `orders` order by case when status != 'ORDER_DONE' then 1 else 2 end,status
我想把订单完成的状态放到底部。有什么想法吗?从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')],
],
],
]
谢谢该解决方案是否可以在排序属性中使用?”sort'=>['attributes'=>['onlinedate'=>['asc'=>['onlinedate'=>sort\u asc],//需要将类型ORDER\u DONE的状态置于底部'desc'=>['onlinedate'=>sort\u desc],//需要将类型ORDER\u DONE的状态置于顶部',,],我得到以下错误:错误信息:数组([S20]=>422[1]=>1054[2]=>未知列“order子句”中的“表达式”)对不起,忘记了数组。