我有两个实体,Invoice和Advance。每个都有一个"paidAt"属性。
在控制器中,我在一个日期范围内获取Invoice和Advance。然后,我将它们合并为一个单独的数组,并将其推送到我的视图中,在那里我将它们显示在列表中。
在将它们推向我的视野之前,我想使用"paidAt"属性对它们进行排序。我在PHP文档上发现了一些多维排序函数,但都使用了PHP原生函数array_multisort()
所以Symfony给了我一个错误:Cannot use object of type Entity'Invoice as array
有什么可以做我想做的吗?
如果两个实体中都有getter getPaidAt()
,则可以用于升序
usort(
$collection,
function($a, $b) {
if ($a->getPaidAt() === $b->getPaidAt()) {
return 0;
}
return ($a->getPaidAt() < $b->getPaidAt())? -1 : 1;
}
);
如果要按降序排序,只需将<
替换为>
即可。
您可以使用usort
只需编写自己的比较函数,它必须适合发票和预付款(您有超类吗?)
http://php.net/manual/de/function.usort.php
附加信息:在symfony2控制器内使用带有关联数组的usort