der*_*ert 3 php sorting datalist silverstripe
是否可以通过计算/虚拟/聚合col来对Datalist/ComponentSet进行排序?
我有一个DataList包含具有StartDate和EndDate的事件.现在我想按事件的持续时间(最短到最长)对列表进行排序.
在SQL中我会这样做:
... ORDER BY DATEDIFF(EndDate, StartDate) ASC
Run Code Online (Sandbox Code Playgroud)
如何使用silverstripe ORM做到这一点
$list = Event::get()->sort('????');
Run Code Online (Sandbox Code Playgroud)
包含新的字段持续时间并在onAfterWrite-hooks中填充此字段的附加列不是首选.
这可能吗 ?
罗伯特
小智 6
$list = Event::get()->sort(array('DATEDIFF("EndDate", "StartDate")' => 'ASC'));
Run Code Online (Sandbox Code Playgroud)
DataList::sort 不进行任何转义,因此任何有效的ORDER BY子句都可以正常工作.