我目前使用Criteria过滤对象集合。但是当我想用2个orderBy字段实现时,只考虑第一个。我不明白。
$events = new Collections\ArrayCollection($results);
$dateFrom = new \DateTime($date);
$dateTo = new \DateTime(date('Y-m-d H:i:s', strtotime($date . ' + 1 day')));
$criteria = Criteria::create()
->where(Criteria::expr()->eq('activity', $activity));
$criteria->orderBy(array(
"time" => "ASC",
"title" => "ASC"
));
如何使用两个有序字段而不仅仅是第一个?
提前感谢您的任何答案!
答案 0 :(得分:0)
您的代码是正确的,假设$criteria
已正确应用于ArrayCollection
。
根据您尝试排序的字段的名称判断,title
可能不会影响订单,因为time
不会在集合中的元素之间重复。< / p>
如果情况并非如此,请提供更多有关您获得的结果的信息,我会更新我的答案。
更新(响应提供的其他数据已被删除):
您 正确排序集合。问题是,您正在将ArrayCollection
提供给Paginator
,显然无法按多个字段排序。
Knp的跟踪器中存在一个未解决的问题:https://github.com/KnpLabs/KnpPaginatorBundle/issues/109。