array_merge на 2 разных наборах сущностей, отсортировать их по общему свойству

У меня есть 2 юридические лица, Счет и Аванс. У каждого есть свойство paidAt.

В контроллере я получаю как Invoice, так и Advance в диапазоне дат. Затем я объединяю их в один отдельный массив и помещаю его в мое представление, где я отображаю их в списке.

Прежде чем перейти к их представлению, я бы хотел отсортировать их, используя свойство «paidAt». Я нашел несколько многомерных функций сортировки в PHP doc, но все они используют встроенную функцию php array_multisort ()

Итак, Symfony выдает мне ошибку: Cannot use object of type Entity\Invoice as array

Есть ли способ сделать то, что я ищу?

0

Решение

Если у вас есть добытчики getPaidAt() в обеих сущностях вы можете использовать для возрастания

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

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

Если вы хотите отсортировать по убыванию, просто замените < от >,

1

Другие решения

ты можешь использовать usort просто напишите свою собственную функцию сравнения, она должна подходить для выставления счета и аванса (у вас есть суперкласс?)

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

Дополнительная информация: использование usort с ассоциативным массивом внутри контроллера symfony2

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector