键/对默认值

时间:2012-10-02 21:08:43

标签: yii

我正在尝试创建一个包含多个字段的表单,某些字段将由用户填充,其他字段将按定义转储到数据库中。

我真的不知道如何在语法方面使用它。

要更通用,例如我有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

上传图片

现在我想知道我怎么能

  1. 在没有用户的数据库字段中传递当前时间和当前日期
  2. 输入。来自会话的用户ID

3 个答案:

答案 0 :(得分:1)

在你的模特中:

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 :(得分:1)

1)如果您使用像MySQL这样的数据库,则不需要created_datecreated_time,只需datetime字段(可能created_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;
}

答案 2 :(得分:0)

  1. 而不是

    'created_time' => 'Created Time',
    'created_date' => 'Created Date',

  2. 您的数据库中只需要一个字段:

    create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

    许多php函数都使用时间戳,它很容易使用它。你可以阅读here。 因此,如果您插入NULL create_time,mysql将插入默认值DEFAULT CURRENT_TIMESTAMP - 当前时间。

    1. 正如@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));
      
    2. 如果不起作用,请告诉我们var_dump(Yii::app()->user->id);