Yii2, upsert - обновляем или добавляем запись в БД

Допустим нам необходимо вставить новую запись с названием "My Product 0001" в таблицу product или обновить поле visits, если запись уже существует. Поле name - уникальное, именно по полю name метод upsert поймет существует ли запись для обновляния или нужно ее добавлять.

  1. upsert($table, $insertColumns, $updateColumns = true, $params = [])

Upsert и QueryBuilder:

  1. $sql = $queryBuilder->upsert('product', [
  2. 'name' => 'My Product 0001', //уникальное поле
  3. 'visibility' => 1,
  4. 'visits' => 1
  5. ],
  6. [
  7. 'visits' => new \yii\db\Expression('visits + 1'),
  8. ],
  9. []
  10. );

Upsert и createCommand:

  1. Yii::$app->db->createCommand()->upsert('pages',
  2. [
  3. 'name' => 'My Product 0001', //уникальное поле
  4. 'visibility' => 1,
  5. 'visits'
  6. ], [
  7. 'visits' => new \yii\db\Expression('visits + 1'),
  8. ],
  9. [])->execute();

Источник: Перейти
Комментарии (0):
Чтобы оставить свой комментарий, необходимо пройти аутентификацию