Метод createMany
Метод createMany применяется к объекту отношения Eloquent
и позволяет создать несколько связанных записей одним вызовом.
В качестве параметра принимает массив массивов с данными для каждой
создаваемой записи. Возвращает коллекцию созданных моделей.
Метод автоматически устанавливает внешний ключ для каждой
создаваемой записи.
Синтаксис
<?php
Model::find($id)->relation()->createMany($data);
?>
Пример
Допустим, у нас есть модель User с отношением posts.
Давайте создадим несколько постов для пользователя с id равным 1:
<?php
use App\Models\User;
$user = User::find(1);
$res = $user->posts()->createMany([
['title' => 'First post', 'content' => 'Content of first post'],
['title' => 'Second post', 'content' => 'Content of second post'],
['title' => 'Third post', 'content' => 'Content of third post']
]);
foreach ($res as $post) {
echo $post->title . "\n";
}
?>
Результат выполнения кода:
"First post"
"Second post"
"Third post"
Пример
Давайте создадим несколько комментариев для статьи
с id равным 5 через отношение comments:
<?php
use App\Models\Article;
$article = Article::find(5);
$res = $article->comments()->createMany([
['user_id' => 1, 'text' => 'Great article!'],
['user_id' => 2, 'text' => 'Very useful information'],
['user_id' => 3, 'text' => 'Thanks for sharing']
]);
foreach ($res as $comment) {
echo $comment->text . "\n";
}
?>
Результат выполнения кода:
"Great article!"
"Very useful information"
"Thanks for sharing"
Пример
Метод createMany можно использовать с различными типами
отношений. Давайте создадим несколько тегов для поста
через отношение tags типа belongsToMany:
<?php
use App\Models\Post;
$post = Post::find(3);
$res = $post->tags()->createMany([
['name' => 'laravel', 'slug' => 'laravel'],
['name' => 'php', 'slug' => 'php'],
['name' => 'web', 'slug' => 'web-development']
]);
foreach ($res as $tag) {
echo $tag->name . "\n";
}
?>
Результат выполнения кода:
"laravel"
"php"
"web"
Смотрите также
-
метод
createMany,
который мы рассмотрели в этой статье -
метод
saveMany,
который сохраняет несколько уже существующих моделей -
метод
createMany,
который создаёт несколько записей через Query Builder -
метод
create,
который создаёт одну запись