Criteria中的多个orderby

时间:2014-09-02 22:10:25

标签: symfony doctrine

我目前使用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"
));

如何使用两个有序字段而不仅仅是第一个?

提前感谢您的任何答案!

1 个答案:

答案 0 :(得分:0)

您的代码是正确的,假设$criteria已正确应用于ArrayCollection

根据您尝试排序的字段的名称判断,title可能不会影响订单,因为time不会在集合中的元素之间重复。< / p>

如果情况并非如此,请提供更多有关您获得的结果的信息,我会更新我的答案。

更新(响应提供的其他数据已被删除):

正确排序集合。问题是,您正在将ArrayCollection提供给Paginator,显然无法按多个字段排序。

Knp的跟踪器中存在一个未解决的问题:https://github.com/KnpLabs/KnpPaginatorBundle/issues/109