Как добавить много информации в БД через updateOrCreate в laravel?

Нужно добавлять\обновлять сразу 1000 записей. По одной записи за раз обновлять через цикл - это кощунство. Как сделать так, чтобы через функцию updateOrCreate можно было добавить\обновить сразу 1000 записей, одной ходкой, так сказать?
  • Вопрос задан
  • 567 просмотров
Пригласить эксперта
Ответы на вопрос 1
amelihovv
@amelihovv
Фулстек веб разработчик
С помощью Model::updateOrCreate() вы можете работать только с одной записью. Для добавления сразу 1000 записей вам нужно использовать метод Model::insert(). В него можно передать сразу массив записей. Только учтите, что поля created_at и updated_at вам нужно будет вручную заполнять.

Если 1000 записей по размеру много получается, то можно либо увеличить лимит в настройках бд, либо записывать частями (чанками) по 100 записей, к примеру.

Если у вас в таблице есть уникальный индекс по какому-нибудь полю, то можете воспользоваться insert on duplicate key. Вот готовый пакет https://github.com/melihovv/insert-on-duplicate-key (поддержка только mysql и sqlite).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы