За последние 24 часа нас посетили 22114 программистов и 1138 роботов. Сейчас ищут 750 программистов ...

Laravel Eloquent множественный insert

Тема в разделе "Laravel", создана пользователем tesla, 1 мар 2019.

Метки:
  1. tesla

    tesla Активный пользователь

    С нами с:
    29 фев 2016
    Сообщения:
    34
    Симпатии:
    1
    Добрый день. Есть таблица tickets
    Она имеет два поля - первичный ключ "ticket_uuid" который генерится автоматом и "user_id".
    Необходимо "сгенерировать" для пользователя 10, 20, 500 "билетов". Есть ли какие-то тонкости в Eloquent которые помогут это сделать без граблей?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Покажи что ты сделал, обсудим есть ли там грабли.
     
  3. tesla

    tesla Активный пользователь

    С нами с:
    29 фев 2016
    Сообщения:
    34
    Симпатии:
    1
    Я только думаю, как сделать... Есть конструкция, ее нужно выполнить N раз
    Код (Text):
    1. DB::table('tickets')->insert(array(
    2.         'user_id'  => '123'
    3.     ));
    В мыслях совсем нехорошие вещи... типа циклов, либо очереди задач на 500 итераций...

    Код (Text):
    1. for($i = 0; $i < 500; $i++) {
    2.         App\Ticket::create([
    3.             'user_id' => 123
    4.         ]);}
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ну 500 раз дёргать insert не хорошо. Лучше собрать в массив и использовать множественный insert, как в этом примере из доки
    PHP:
    1. DB::table('users')->insert([
    2.     ['email' => 'taylor@example.com', 'votes' => 0],
    3.     ['email' => 'dayle@example.com', 'votes' => 0]
    4. ]);
    Т.е. сделай массив из 500-а ['user_id' => 123]. Только надо придумать, по какому признаку ты потом эти билеты будешь выбирать