Yii: Не удается сохранить данные во вновь добавленный столбец

#php #yii

#php #yii

Вопрос:

В моем приложении модель комментариев частично отображается в представлении продукта. Все в порядке, за исключением того, что после того, как я добавил новый столбец в свою таблицу комментариев, я не могу сохранить данные в новый столбец (с именем ‘ddate’). Даже я пробовал это:

 $_POST['Comment']['ddate'] = 'something';
$model2->attributes=$_POST['Comment'];
$model2->save();
 

но не работает!

Комментарии:

1. возможно, вы неправильно добавили этот новый атрибут в модель, просмотрите свою модель с помощью gii и проверьте различия

2. Я сделал это построчно! никакого результата!

3. пожалуйста, опубликуйте свой полный код модели

4. пользуйтесь var_dump($model->getErrors()) , может быть, у вас есть ошибки дадаш!

Ответ №1:

 $temp = $model->attributes;
$model->setFields($_POST['Comment'];);
$model->ddate  = $_POST['Comment']['ddate'];
if($model->save())
{
    echo "saved";
}
 

Ответ №2:

Вы должны установить атрибут как «безопасный» в модели, иначе значение формы не будет скопировано в модель при $model2->attributes = $_POST['Comment']; вызове.

Пример:

 public function rules() {
    return array(
        array('ddate', 'safe'),
    );
}
 

Если вы всегда хотите, чтобы ddate был текущей датой / временем, возможно, было бы лучше установить его beforeSave() вместо этого:

 protected function beforeSave() {

    if($this->hasAttribute('ddate') amp;amp; !isset($this->ddate)) 
        $this->ddate = date("Y-m-d H:i:s");
 

Комментарии:

1. Я сделал это самым безумным образом! Я восстановил его в gii, и это сработало! но еще раз спасибо 🙂