Метод merge
Метод merge применяется к коллекции и объединяет её с переданной коллекцией или массивом. Если ключи совпадают, значения из переданной коллекции заменяют значения из исходной. Если ключи уникальны, новые элементы добавляются в конец коллекции. Метод возвращает новую коллекцию, не изменяя исходную.
Синтаксис
<?php
$collection->merge($items);
?>
Пример
Объединим коллекцию с массивом:
<?php
use Illuminate\Support\Collection;
$coll = new Collection([1, 2, 3, 4, 5]);
$res = $coll->merge([6, 7, 8]);
echo $res;
?>
Результат выполнения кода:
[1, 2, 3, 4, 5, 6, 7, 8]
Пример
При объединении ассоциативных массивов с одинаковыми ключами:
<?php
use Illuminate\Support\Collection;
$coll = new Collection(['a' => 1, 'b' => 2, 'c' => 3]);
$res = $coll->merge(['b' => 4, 'd' => 5]);
echo $res;
?>
Результат выполнения кода:
{"a":1,"b":4,"c":3,"d":5}
Обратите внимание, что значение с ключом 'b' было заменено на 4.
Пример
Объединим коллекцию с другой коллекцией:
<?php
use Illuminate\Support\Collection;
$coll1 = new Collection(['a', 'b', 'c']);
$coll2 = new Collection(['d', 'e']);
$res = $coll1->merge($coll2);
echo $res;
?>
Результат выполнения кода:
["a","b","c","d","e"]
Пример
Исходная коллекция при этом не изменяется:
<?php
use Illuminate\Support\Collection;
$coll = new Collection([1, 2, 3, 4, 5]);
$coll->merge([6, 7, 8]);
echo $coll;
?>
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Объединим коллекцию моделей Eloquent с массивом:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use Illuminate\Support\Collection;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::where('status', 'published')->get();
$newArticles = new Collection([
['title' => 'article 4', 'status' => 'draft'],
['title' => 'article 5', 'status' => 'draft']
]);
$res = $articles->merge($newArticles);
return $res;
}
}
?>