Припустимо, нам необхідно додати новий запис із назвою «My Product 0001» у таблицю product або оновити поле visits, якщо запис вже існує. Поле name - унікальне, саме за полем name метод upsert зрозуміє, чи існує запис для оновлення, чи потрібно його додавати.
upsert($table, $insertColumns, $updateColumns = true, $params = [])
Upsert та QueryBuilder:
$sql = $queryBuilder->upsert('product', [ 'name' => 'My Product 0001', //унікальне поле 'visibility' => 1, 'visits' => 1 ], [ 'visits' => new \yii\db\Expression('visits + 1'), ], [] );
Upsert та createCommand:
Yii::$app->db->createCommand()->upsert('pages', [ 'name' => 'My Product 0001', //унікальне поле 'visibility' => 1, 'visits' ], [ 'visits' => new \yii\db\Expression('visits + 1'), ], [])->execute();