cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!

Почему не работает стандарный метод Update CRUD?

/**
     * Updates an existing news model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id
     * @return mixed
     * @throws NotFoundHttpException if the model cannot be found
     */
    public function actionUpdate($id)
    {
        $model = $this->findModel($id);
        
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
        	
            return $this->redirect(['view', 'id' => $model->id]);
        }

        return $this->render('update', [
            'model' => $model,
        ]);
    }

Стандартный метод сгенерированый через CRUD Gii.
Изменяю поле какое нибудь в новости, к примеру заголовок.
он не изменяет его. просто
проходит все условия и просто выполняет
return $this->redirect(['view', 'id' => $model->id]);

а с методом create вообще ошибку выдает
Database Exception – yii\db\Exception
SQLSTATE[HY000]: General error: 1364 Field 'caption' doesn't have a default value
The SQL being executed was: INSERT INTO `ab_news` (`id`) VALUES (DEFAULT)
Error Info: Array
(
    [0] => HY000
    [1] => 1364
    [2] => Field 'caption' doesn't have a default value
)
↵
Caused by: PDOException
SQLSTATE[HY000]: General error: 1364 Field 'caption' doesn't have a default value
in W:\domains\localhost1\vendor\yiisoft\yii2\db\Command.php at line 1290
  • Вопрос задан
  • 224 просмотра
Решения вопроса 2
@KingstonKMS
Для модели укажите rules с ее полями.
Включите дебаг режим, очень помогает понять где данных нет.
Обратите внимание на запрос в ошибке, он содержит только поле id.
Ответ написан
Комментировать
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Field 'caption' doesn't have a default value
По остальному надо смотреть модель.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@cyberlog
General error: 1364 Field 'caption' doesn't have a default value


Вы не передаете поле caption, а так как в БД у него нет значения по умолчанию, то происходит ошибка - mysql запрещает делать такие INSERT
Нужно либо дополнить форму этим значением, либо добавить в описание таблицы значение по умолчанию для этого (и других неиспользуемых) полей.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы