public function actionEditAuthor() {
$author = new ArticleAuthor();
$author->load(Yii::$app->request->post());
$author->update();
return $this->redirect(['article/edit-step3', 'id' => $author->article_id]);
}
Но я не понимаю зачем для редактирования мне лишний select запрос?
public function actionAddAuthor() {
$author = new ArticleAuthor();
if($author->load(Yii::$app->request->post() && $author->save()){
return $this->redirect(['article/edit-step3', 'id' => $author->article_id]);
}
}
public function actionEditAuthor($id) {
$author = $this->findModel($id); // тут select запрос, который возвращает модель для редактирования.
if($author->load(Yii::$app->request->post() && $author->save()){
return $this->redirect(['article/edit-step3', 'id' => $author->article_id]);
}
}
А как скрипт определить, какую запись редактировать?
update article_author set ... where id = 123 # этого было бы достаточно
Не выдумывайте и не занимайтесь ерундой.
То, что Вы сейчас делаете - для создания новой записи. Для сохранения данных используйте save(), хотя и для обновления тоже надо вызывать save().
Ничего себе ерунда. 2 запроса там где можно сделать все одним. Вот из-за такой ерунды пхп и считается самым говнокодным языком.
Разве он не может подставить в where - PK?
А зачем тогда вообще нужен метод update?
зачем тогда Вы его используете?
Как скрипт определит, какой id ему передан?
update()
updateAll()
Я просто надеялся что Yii сам может такие вещи делать, но видимо моим надеждам не суждено сбыться. :(
$author = ArticleAuthor::findOne(['id' => $id]);
$author->load(Yii::$app->request->post());
$author = new ArticleAuthor();
$author->load(Yii::$app->request->post()); // повторюсь в n-ый раз - я передаю id тоже в запросе!!!
$model->name = // данные из post запроса
$model->update();
$model->name = ***;
$model->surname = ***;
$model->patronymic = ***
// ещё куча параметров и только в конце
$model->update();
Или же они чем-то будут отличаться?
а если в модели надо обновить 20 параметров? Будете писать так
$author->load(Yii::$app->request->post());
$author1->load(Yii::$app->request->post());
var_dump($autor1);
$author2 = ArticleAuthor::findOne(['id' => $id]);
var_dump($autor2);
...погодите ка... Он что отлавливает как-то непосредственное присвоения руками, а на загрузку через метод load не реагирует чтоли?
я как бы и сейчас общаюсь на форуме, не?))))
данные на форму выводит другой запрос.