РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
249 of 1392 menu

Метод createMany

Метод createMany применяется к отношению типа hasMany или morphMany и позволяет создать несколько связанных моделей за один вызов. В качестве параметра метод принимает массив массивов, где каждый внутренний массив представляет собой атрибуты для создания одной модели. Метод возвращает коллекцию созданных моделей.

Синтаксис

<?php $parentModel->relation()->createMany([ ['column1' => 'value1', 'column2' => 'value2'], ['column1' => 'value3', 'column2' => 'value4'], ]); ?>

Пример

Давайте создадим несколько статей для автора с идентификатором 1:

<?php use AppModelsAuthor; use AppModelsArticle; $author = Author::find(1); $articles = $author->articles()->createMany([ [ 'title' => 'article 1', 'content' => 'content for article 1', 'status' => 'published' ], [ 'title' => 'article 2', 'content' => 'content for article 2', 'status' => 'draft' ], [ 'title' => 'article 3', 'content' => 'content for article 3', 'status' => 'published' ] ]); foreach ($articles as $article) { echo $article->title . "\n"; } ?>

Результат выполнения кода:

"article 1" "article 2" "article 3"

Пример

Метод createMany можно использовать с данными из внешнего источника. Давайте создадим несколько комментариев к посту:

<?php use AppModelsPost; use AppModelsComment; $post = Post::find(1); $comments = $post->comments()->createMany([ ['text' => 'comment 1', 'author_id' => 2], ['text' => 'comment 2', 'author_id' => 3], ['text' => 'comment 3', 'author_id' => 4] ]); foreach ($comments as $comment) { echo $comment->text . "\n"; } ?>

Результат выполнения кода:

"comment 1" "comment 2" "comment 3"

Пример

Метод createMany автоматически заполняет внешний ключ для всех создаваемых моделей. Давайте проверим это, создав несколько записей через метод и выведем их идентификаторы:

<?php use AppModelsCustomer; use AppModelsOrder; $customer = Customer::find(1); $orders = $customer->orders()->createMany([ ['total' => 100, 'status' => 'pending'], ['total' => 200, 'status' => 'confirmed'], ['total' => 150, 'status' => 'pending'] ]); foreach ($orders as $order) { echo $order->customer_id . " - " . $order->total . "\n"; } ?>

Результат выполнения кода:

"1 - 100" "1 - 200" "1 - 150"

Смотрите также

  • метод saveMany,
    который сохраняет множество существующих моделей через отношение
  • метод create,
    который создаёт одну модель через отношение
  • метод firstOrCreate,
    который находит или создаёт запись
  • метод updateOrCreate,
    который обновляет или создаёт запись
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить