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('Ошибка при обновлении даты тренировки.');
}
Такая вот интересная функция.
17 ноября 2022, Программирование, веб-кодинг
16 января 2023

Yii2-user сменить текущего пользователя или переход на другого пользователя (SwitchIdentity)
Impersonate User / Become another user
12 декабря 2022

Yii2: uclead MultipleInput + kartik DepDrop
Настраиваем множественные поля с выпадающим списком