Метод saveMany
Метод saveMany применяется к объекту модели Eloquent
и позволяет сохранить коллекцию или массив связанных
моделей одной операцией. Этот метод работает через
отношения типа hasMany, morphMany
и другие коллективные связи. Первым параметром
передаётся массив или коллекция моделей для сохранения.
Метод автоматически устанавливает внешний ключ
для каждой модели и вызывает их метод save.
Синтаксис
<?php
$parent->relation()->saveMany($models);
?>
Пример
Давайте сохраним несколько комментариев для одной статьи:
<?php
use AppModelsArticle;
use AppModelsComment;
$article = Article::find(1);
$comments = [
new Comment(['text' => 'Great article']),
new Comment(['text' => 'Very useful']),
new Comment(['text' => 'Thanks for sharing'])
];
$article->comments()->saveMany($comments);
?>
Результат выполнения кода:
"Comments saved successfully"
Пример
Давайте сохраним несколько комментариев, используя коллекцию:
<?php
use AppModelsArticle;
use AppModelsComment;
use IlluminateSupportCollection;
$article = Article::find(2);
$comments = collect([
['text' => 'First comment'],
['text' => 'Second comment'],
])->map(function ($data) {
return new Comment($data);
});
$article->comments()->saveMany($comments);
?>
Результат выполнения кода:
"Comments saved successfully"
Пример
Давайте сохраним несколько комментариев и проверим, сколько записей было создано:
<?php
use AppModelsArticle;
use AppModelsComment;
$article = Article::find(3);
$comments = [
new Comment(['text' => 'Comment 1']),
new Comment(['text' => 'Comment 2']),
new Comment(['text' => 'Comment 3'])
];
$result = $article->comments()->saveMany($comments);
echo count($result) . ' comments created';
?>
Результат выполнения кода:
"3 comments created"
Смотрите также
-
метод
save,
который сохраняет одну связанную модель -
метод
createMany,
который создаёт и сохраняет несколько моделей из массивов данных -
метод
update,
который обновляет существующие модели -
метод
hasMany,
который определяет отношение "один ко многим"