2012-10-02 79 views
0

我想創建一個將有多個字段的表單,一些字段將由用戶填充,其他字段將按照定義轉儲到數據庫中。鍵/對默認值

我真的不知道如何用語法來處理這個問題。

更通用的,比如我有一個具有以下的Fileds

  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', 
    ); 

現在我要帶輸入來自用戶只能在下列領域發表tble:

Heading 
Description 
Tags 

上傳圖片

現在我想知道我該如何

  1. 在沒有用戶的情況下在數據庫字段中傳遞當前時間和當前日期
  2. 輸入。從會議
  3. 用戶ID

回答

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(); 
} 
+0

我這樣做了,但仍然是空白到數據庫 –

+0

向我們展示如何保存模型。 –

+0

你想看什麼?我沒有得到它 –

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; 
} 
0
  1. 而不是

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

你只需要一個字段在數據庫:

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)); 
    

如果它不工作,請告訴我們var_dump(Yii::app()->user->id);