2014-09-02 209 views
1

我目前使用Criteria來過濾一組對象。但是當我想用2個orderBy字段實現時,只考慮第一個字段。我不明白。Criteria中的多個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" 
)); 

我怎樣才能使它與兩個ord​​erby字段,而不僅僅是第一個?

預先感謝您的任何答案!

+0

您發佈的提供附加信息的答案已被刪除,而不是合併到您的問題中,這是他們應該完成的。儘管如此,我已經相應地更新了我的答案。確保你看看! – FyodorX 2014-09-05 13:23:29

回答

0

您的代碼是正確的,假設$criteria然後正確應用於ArrayCollection

根據您試圖訂購的字段名稱判斷,有可能title不會影響訂單,因爲time不會在集合中的元素之間重複。

如果情況並非如此,請提供更多關於您所得結果的信息,我會更新我的答案。

更新(響應提供了額外的數據已被刪除):

正確排序的集合。問題是,你然後將ArrayCollection送入Paginator,這顯然不能被一個以上的字段排序。

在Knp的跟蹤器中存在一個這樣的問題:https://github.com/KnpLabs/KnpPaginatorBundle/issues/109