Я пытаюсь объединить несколько объектов (например, квитанции, отчеты и т. Д.) С помощью .Слияние нескольких объектов, которые используют один и тот же идентификатор
Это код я использовал:
$receipts = Receipt::all();
$reports = Report::all();
$collection = $receipts->merge($reports);
Это результат:
, приведенный выше снимок экрана показывает два элемента, а третий элемент отсутствует, поскольку он имеет тот же идентификатор (id: «1») как первый. То, что я пытаюсь достичь, состоит в том, чтобы отобразить все три из них в виде коллекции.
EDIT:
мне нужен результат, чтобы быть объектами (сбор), потому что я также использовать код на мой взгляд, где я проверяю класс, чтобы определить, что для отображения. Кроме того, я использую эту функцию для сортировки объектов в коллекции.
$collection->sort(function($a, $b)
{
$a = $a->created_at;
$b = $b->created_at;
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
});
Нет причин, по которым это слияние не должно работать. Коллекция не зависит от каких-либо свойств элементов. Под капотом 'merge()' является просто массивом элементов array_merge.Как выглядит объект Report? – tomvo