У меня есть 2 юридические лица, Счет и Аванс. У каждого есть свойство paidAt.
В контроллере я получаю как Invoice, так и Advance в диапазоне дат. Затем я объединяю их в один отдельный массив и помещаю его в мое представление, где я отображаю их в списке.
Прежде чем перейти к их представлению, я бы хотел отсортировать их, используя свойство «paidAt». Я нашел несколько многомерных функций сортировки в PHP doc, но все они используют встроенную функцию php array_multisort ()
Итак, Symfony выдает мне ошибку: Cannot use object of type Entity\Invoice as array
Есть ли способ сделать то, что я ищу?
Если у вас есть добытчики 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
Дополнительная информация: использование usort с ассоциативным массивом внутри контроллера symfony2