мне сохранить (или обновить) его в БД максимально быстро? Сейчас я это делаю с помощью Foreach, но на 35 тыс записей тратится 26 минут. Можно как-то быстрее это делать?
1. удалить то что есть 2. сформировать 1 большой массив 3. одной командой записать его в базу
либо пакетная вставки либо Prepared Statements
Я могу в этом случае использовать Item::updateOrCreate()?
Попробуй сначала собрать в коллекцию этот JSON (распарсить), и потом вставить.
Во-первых, в ларе есть insert для добавления множества записей за один раз. Это намного быстрее, чем использовать foreach. Однако функция insert не обновляет существующие записи. Если тебе нужно обновлять существующие записи, ты можешь использовать метод updateOrInsert, но он не предоставляет функцию массовой вставки или обновления. А вообще можешь посмотреть в торону использования какой нибудь либы Типа этой https://github.com/staudenmeir/laravel-upsert
Upsert попробуй.
вроде в новых версиях уже есть upsert
Да, из коробки
Да есть👍 https://laravel.com/docs/10.x/eloquent#upserts
офигеть,уже 10 версия вышла . До сих пор сижу на 5,7 ((
Обсуждают сегодня