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