【发布时间】:2016-01-29 09:06:02
【问题描述】:
我正在使用 GridView 来显示一些数据。我需要按 2 列添加默认排序,如下所示:
(CASE
WHEN (inbound_datetime IS NULL AND outbound_datetime < NOW()) OR (inbound_datetime IS NOT NULL AND inbound_datetime < NOW())
THEN 9999
WHEN (inbound_datetime IS NOT NULL AND outbound_datetime < NOW())
THEN inbound_datetime
ELSE outbound_datetime
END) ASC
如果我在数据提供程序查询的ORDER BY 子句中添加此代码,则所有其他排序选项都不起作用,因为此条件应用于查询本身。
我尝试将默认排序应用到任何其他网格,但它不起作用(该方法搜索具有该名称的属性):
'sort' => [
'defaultOrder' => [
'(CASE
WHEN (inbound_datetime IS NULL AND outbound_datetime < NOW()) OR (inbound_datetime IS NOT NULL AND inbound_datetime < NOW())
THEN 9999
WHEN (inbound_datetime IS NOT NULL AND outbound_datetime < NOW())
THEN inbound_datetime
ELSE outbound_datetime
END)' => SORT_ASC,
],
],
有什么方法可以使这种默认排序工作,并且仍然保持正确使用按列名进行网格排序的能力?
【问题讨论】:
标签: sorting gridview yii2 sql-order-by case