Задать вопрос
@XenK

Yii2 Обновить/Добавить записи в базу?

Есть большой массив, порядка 3000. Выглядит так:
array(
'test1' => 23
'test2' => 35
...
)


Нужно добавить эти значения в БД (колонки: test, val), значение val может меняться, т.е массив не постоянный. Если test1 уже есть то обновляем занчение val, если нет то добавляем новую запись.

Пробовал сделать так:
foreach ($arr as $test => $val) {
            $item = Arr::findOne(['test' => $test]);
            if (!empty($item)) {
                $item->test = $test;
                $item->val = $val;
            } else {
                $item = new Arr();
                $item->test = $test;
                $item->val = $val;
            }
            $item->save();
        }


Но так добавляется только одна запись. Как лучше это сделать?
  • Вопрос задан
  • 241 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
latteo
@latteo
$this->db = Yii::$app->db; 
    $sql = $this->db
      ->QueryBuilder
      ->batchInsert('table_name', ['test', 'val'], $arr);
    //У меня уникальность по первому полю и я хочу избежать ошибок, которые прервут вставку:
    $sql = 'INSERT IGNORE' . mb_substr($sql, strlen('INSERT'));
    $inserted = $this->db->createCommand($sql)->execute();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽