2014-10-27 47 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

相关问题