0

複数のフィールドを持つフォームを作成しようとしています。一部のフィールドはユーザーが入力し、他のフィールドは定義どおりにデータベースにダンプされます。

構文に関して、これをどのように扱うか本当にわかりません。

より一般的にするには、たとえば、次のフィールドを持つ Post テーブルがあります

            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
4

3 に答える 3

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();
}
于 2012-10-02T21:13:23.413 に答える
1

1) MySQL のようなデータベースを使用する場合は、両方のデータを格納するフィールド (おそらくそのようなもの) は必要created_dateありません。created_timedatetimecreated_time

public function behaviors()
{
    return array(
        'CTimestampBehavior' => array(
            'class' => 'zii.behaviors.CTimestampBehavior',
            'updateAttribute' => false,
            'createAttribute' => 'created_time',
        )
    );
}

次に、2 つの場合:

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;
}
于 2012-10-02T21:17:15.417 に答える
0
  1. それ以外の

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

データベースに必要なフィールドは 1 つだけです。

create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

多くの PHP 関数はタイムスタンプを使用しており、非常に簡単に使用できます。ここで読むことができます。したがって、 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);

于 2012-10-03T04:52:43.990 に答える