php – 通过计算/聚合列对DataList进行排序

是否可以通过计算/虚拟/聚合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子句都可以正常工作.

上一篇:C#(ASP.NET)增删改


下一篇:Android中适配器的notifyDataSetChanged()为何有时不刷新