Можно ли сделать массовую вставку c отношениями many to many?
В кратце, структура EAV, есть продукты, атрибуты, значения и таблица все это связывающая.
Можно ли в YII сделать массовый инсерт?
Я по API, забирую товары, паршу их, как мне их массово вставить\если товар существует то просто обновить? Товаров очень много, хотелось бы сделать за минимальное количество запросов в БД.
Если YII не поддерживает такое ( не нашел в документации), можно как-то реализовать сырыми запросами?
Дмитрий, Добрый, да видел этот метод. Но он не до конца решает всю задачу.
Я делаю батч инсерт в таблицу продуктов, затем в атрибуты, потом в в значения? Ну допустим, ушло вместо 1000 товаров 3 запроса, а как мне это дело потом связать в четвуртую таблицу по айдишникам?
Дмитрий, просмотрел код плагина, если не ошибаюсь, то плагин сохранят циклми по 1 отношению. Соответственно если я получаю 1000 товаров, то пойдет 1000 запросов на сохранение отношений. ПРи этом я не уверен что это будет работать с batchInsert.
Как я понимаю, мы не можем пачками сразу все подвязать на уровне Базы Данных, т.к. при вставке товаров\атрибутов\значений, мы не знаем их айдишники чтоб вставить все это в связующию таблицу.
Т.е. у меня есть вставка\обновление, самый оптимальный вариант что я вижу, а с помощью batchInsert вставить товары, атрибуты, значения, потом 3 запросами достать эти данные с айдишниками, потом каким-то образом составить данные для вставку в связующию таблицу и опять же с batchInsert все ставить.
В таком случае у меня будет всего 7 запросов на 1000 товаров, а не 4000+
FasterTans, id вставляемой записи можно знать заранее. Используйте для этого guid, используйте пакет ramsey uuid. Подробней можно узнать на elisdn.ru, в серии статей по DDD.
FasterTans, подумал тут немного, да, не будет работать с branchInsert. Вы же передаёте просто данные в запрос, а не модель. Надо как-то заполнять эти модели.
Вы парсите данные в консоли?