array_merge在2个不同的实体集合上,按公共属性对它们进行排序

时间:2014-10-27 10:32:20

标签: php sorting symfony merge entity

我有2个实体,Invoice和Advance。每个人都有一个" paidAt"属性。

在控制器中,我在日期范围内获取Invoice和Advance。然后,我将它们合并为1个单独的数组并将其推入我的视图中,在那里我将它们显示在列表中。

在将它们推向我的观点之前,我想使用" paidAt"属性。我在PHP文档上发现了一些多维排序函数,但都使用了php本机函数array_multisort()

所以Symfony给我一个错误:Cannot use object of type Entity\Invoice as array

无论如何都要做我正在寻找的事情?

2 个答案:

答案 0 :(得分:1)

如果您在两个实体中都有get getPaidAt(),则可以使用升序

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

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

如果您想对降序进行排序,只需将<替换为>

答案 1 :(得分:0)

你可以使用usort编写自己的比较函数,它必须适合发票和预付(你有超类吗?)

http://php.net/manual/de/function.usort.php

其他信息:using usort with associative array inside symfony2 controller