Задать вопрос
devellopah
@devellopah

Как объединить содержимое двух коллекций?

Есть две коллекции( $itemsByMart, $customProductsByMart ). На скрине ниже вывод кода
return [
            '$itemsByMart' => $itemsByMart,
            '$customProductsByMart' => $customProductsByMart
        ];

62206be5d2b05143004571.png

Я хочу собрать всё содержимое двух коллекций в одну, но мердж не подходит, потому что мне нужно на выходе следующее
{
  "1": [
     {...},
     {...},
     {...}
  ],
  "2": [
     {...}
  ],
  "3": [
     {...}
  ]
}

Подскажите, пожалуйста, как получить такой результат.
  • Вопрос задан
  • 321 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Одна новая пустая коллекция и два foreach - по одному для каждой существующей.
Ответ написан
Fragster
@Fragster
помогло? отметь решением!
https://laravel.com/docs/8.x/collections#method-me... не то? Возможно еще https://laravel.com/docs/8.x/collections#method-map в цепочку надо будет добавить
Ответ написан
Комментировать
devellopah
@devellopah Автор вопроса
В-общем, сделал как-то так, хотя, думаю, что можно было бы и получше.
$results = collect();
$itemsByMart->each(function ($item, $key) use ($customProductsByMart, $results) {
  $push = $customProductsByMart->has($key) ? $item->mergeRecursive($customProductsByMart->get($key)) : $item;
   $results[$key] = $push;
});
$customProductsByMart->each(function ($item, $key) use ($results) {
  if (!$results->has($key)) {
    $results[$key] = $item;
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы