【问题标题】:Yii: Can't save data into newly added columnYii:无法将数据保存到新添加的列中
【发布时间】:2014-08-15 16:58:57
【问题描述】:

在我的应用中,评论模型部分呈现在产品视图中。 一切都很好,除了在我的评论表中添加了一个新列之后,我无法将数据保存到新列(名为“ddate”)中。 即使我试过这个:

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

但不工作!

【问题讨论】:

  • 可能是你没有把这个新属性正确添加到模型中,用gii预览你的模型,检查一下差异
  • 我一行一行地做了!没有结果!
  • 请发布您的完整型号代码
  • 使用var_dump($model->getErrors()),也许你有错误dadash!

标签: php yii


【解决方案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') && !isset($this->ddate)) 
            $this->ddate = date("Y-m-d H:i:s");
    

    【讨论】:

    • 我用最疯狂的方式做到了!我在 gii 中重新生成了它,它起作用了!但再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多