@McMike

Как правильно сделать update записи из таблицы?

Пытаюсь редактировать запись

$postData = $this->request->post();
$model->load($postData);
$model->validate();
$model->save();

Почему при $model->save(); происходит попытка вставить новую запись, а не обновить существующую, ведь она уже загружена из ПОСТА? id(primary key) там есть.
  • Вопрос задан
  • 350 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Когда Вы загружаете данные в модель из поста они просто загружаются в атрибуты и на этом все, никакого поиска среди уже созданных моделей по умолчанию не происходит. Соответственно если Вы хотите произвести редактирование модели Вы должны:
1. Сначала ее найти
2. Потом загрузить данные из поста
3. Сохранить
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
mhthnz
@mhthnz
PHP, YII2, Golang, Linux
Видимо вы создаете новый инстанс объекта.
public function actionUpdate($id)
{
	$model = Model::findOne($id);
	if ($model === null) {
		//exception
	}
	$model->load(Yii::$app->request->post());
	$model->save();
	return $this->render ....
}
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
если так:
$model = new SomeModel();
$model->save();

имеем новую запись, так как создан новый экземпляр модели, пустой, без id и $model->isNewRecord возвращает true
а если так:
$model = SomeModel::find()->one();
$model->save();

то это модель имеет id и метод $model->isNewRecord возвращает false а следовательно произойдет обновление данных с определенным id
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы