Множественное добавление данных

Рейтинг: 0Ответов: 1Опубликовано: 26.11.2014

Есть таблица связей, состоящая из 2 колонок (id каталога, id модели).

Есть массив чисел (id моделей) и id каталога.

Как лучше добавить массив в базу?

Мысли:

  1. В цикле создавать модели и сохранять модели (но, на мой взгляд, слишком много запросов может получиться).
  2. Создать один свой sql-запрос для добавления (самому необходимо формировать sql, кажется не безопасно).

Есть еще варианты добавления?


добавлено:

Массив может быть до 5000.

Ответы

▲ 2Принят

Тут нужно для начала решить такой вопрос: если сейчас или в будущем могут появиться поведения модели при добавлении новой строки в базу, то тут одним запросом вы не сможете обойтись, так как при таком подходе события не будут отрабатывать.

Если же таких ситуаций не будет в обозримом будущем, то делайте валидацию и создавайте запросы на множественную вставку. Но тут еще есть ограничения на размер запроса у MySQL.

Я в свое время при написании загрузки прайс-листов вышел экспериментальным путем на 500 строк за 1 запрос, при том что база была не локальная, а соединение по инету.

Да, кстати, в YII2 точно помню, что множественная вставка реализована в коробке, по поводу YII 1.0 не подскажу.