Yii 键/对默认值

Yii 键/对默认值,yii,Yii,我试图创建一个表单,它将有多个字段,一些字段将由用户填写,其他字段将被转储到数据库中 就语法而言,我真的不知道如何处理这个问题 更一般地说,例如,我有Post-tble,它有以下文件 id' => 'ID', 'post_head' => 'Heading', 'post_desc' => 'Description', 'post_tags' => 'Tags', 'created_t

我试图创建一个表单,它将有多个字段,一些字段将由用户填写,其他字段将被转储到数据库中

就语法而言,我真的不知道如何处理这个问题

更一般地说,例如,我有Post-tble,它有以下文件

            id' => 'ID',
        'post_head' => 'Heading',
        'post_desc' => 'Description',
        'post_tags' => 'Tags',
        'created_time' => 'Created Time',
        'created_date' => 'Created Date',
        'post_image' => 'Upload Image',
        'post_status' => 'Status',
        'user_id' => 'User',
        'category_id' => 'Category',
    );
现在,我只想从用户处获取以下字段中的输入:

Heading
Description
Tags
上传图像

现在我想知道我怎么能

  • 在数据库字段中传递当前时间和当前日期,无需用户
  • 输入。来自会话的用户id
  • 在您的模型中:

    function beforeSave() {
        if($this->getIsNewRecord()) {
            $this->created_date = new CDbExpression('NOW()');
            $this->created_time = new CDbExpression('NOW()');
        }
        $this->user_id = Yii::app()->user->id;
        return parent::beforeSave();
    }
    
    1) 如果您使用MySQL这样的数据库,您不需要
    created\u date
    created\u time
    ,只需要
    datetime
    字段(可能
    created\u time
    就是这样),它将存储这两个数据

    public function behaviors()
    {
        return array(
            'CTimestampBehavior' => array(
                'class' => 'zii.behaviors.CTimestampBehavior',
                'updateAttribute' => false,
                'createAttribute' => 'created_time',
            )
        );
    }
    
    然后是两个:

    function beforeSave() {
        if (!parent::beforeSave) {
            return false;
        }
        $this->user_id = Yii::app()->user->id; // it should be this one, but it depends on how you implemented logging!
        return true;
    }
    
  • 而不是

    “创建时间”=>“创建时间”,
    “创建日期”=>“创建日期”,

  • 数据库中只需要一个字段:

    create_time timestamp NOT NULL默认当前_timestamp

    很多php函数都使用时间戳,使用起来非常简单。你可以阅读。 因此,如果插入NULL
    create_time
    ,mysql将插入默认值
    default CURRENT_TIMESTAMP
    -CURRENT time

  • 正如所说的@Veseliq和@mashingan,您需要添加

    function beforeSave() {     
        $this->user_id = Yii::app()->user->id;  
       return parent::beforeSave();  
    }
    
    或者尝试在表单视图中添加:

    echo $form->hiddenField($model, 'user_id', array('value'=>Yii::app()->user->id));
    

  • 如果不起作用,则向我们显示
    var\u dump(Yii::app()->user->id)

    我这样做了,但数据库中的字段仍将变为空白,以向我们展示如何保存模型。您希望看到什么?我不明白你怎么保存你的模型?您是否可以提供控制器操作,或者在任何其他地方
    $model->save()