2014-10-27 28 views
0

我有2個實體,發票和高級。每個人都有一個「paidAt」屬性。array_merge在2個不同的實體集合中,按公共屬性排序

在控制器中,我在日期範圍內獲取發票和墊款。然後,我將它們合併到一個單獨的數組中,並將其推入到我的視圖中,並在列表中顯示它們。

在將它們推到我的視圖之前,我想使用「paidAt」屬性對它們進行排序。我發現PHP DOC一些多維的各種功能,但是所有使用PHP自身的功能在array_multisort()的

所以Symfony的引發我一個錯誤:Cannot use object of type Entity\Invoice as array

反正有沒有做什麼,我正在尋找?

+1

請先添加一些代碼。 – 2014-10-27 10:33:37

+0

我認爲我選擇了一種不好的方式來做到這一點。爲什麼不根據需要檢索所有數據而無需合併,並且已經直接從數據庫中排序? – Alex 2014-10-27 12:04:47

+0

在我的發票庫中,我可以同時獲取發票和提前實體?這不是一種邏輯誤解嗎? – VaN 2014-10-27 12:19:16

回答

1

如果您在兩個實體中都有吸氣劑getPaidAt()可用於升序

usort(
    $collection, 
    function($a, $b) { 
     if ($a->getPaidAt() === $b->getPaidAt()) { 
      return 0; 
     } 

     return ($a->getPaidAt() < $b->getPaidAt())? -1 : 1; 
    } 
); 

如果要按降序排序,只需用>替換<即可。

+0

使用這個,它工作得很好。謝謝 – VaN 2014-10-28 08:23:40

相關問題