Программирование, веб-кодинг

Yii2: Функция upsert() - обновление существующей записи или создание новой (если ещё нет)

Upsert = Update+Insert. Часто требуется добавить новую запись в таблицу базы данных, но при этом если запись с таким-то уникальным значением уже в таблице имеется, то обновить эту существующую запись.

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

$insertValues = [
'id' => $id,
'date_last_practice' => time(),
'pupil_id' => Yii::$app->user->identity->id, // url is unique
];
$updateValues = ['date_last_practice' => time()];
if(Yii::$app->db->createCommand()->upsert('day', $insertValues, $updateValues)->execute()){
Yii::$app->getSession()->setFlash('success', Yii::t('user', 'День успешно чекнут.'));
return $this->redirect(Yii::$app->request->referrer);
} else {
throw new NotFoundHttpException('Ошибка при обновлении даты тренировки.');
}

Такая вот интересная функция.