3

私は次のような配列を持っています:

 $holiday = array(array('h_date' => $new_year, 'd_name' => 'New Year'),
    array('h_date' => $memorial_day, 'd_name' => 'Memorial Day')
 foreach($holiday as $holidays){
 $date = $holidays["h_date"];
 $name = $holidays["d_name"]


mysqlデータベースに保存するとき

 $model = new Holiday();
 $model->holiday_date = $date;
 $model->display_name = $name;
 $model->save(); 

私が書くとき

 $model->save(false); 


値は正常に保存されましたが、「false」データがない
場合、検証エラーがエラーよりも表示されたときに保存されませんでした。

 Array ( [holiday_date] => Array ( [0] => The format of Holiday Date is invalid.))


を使用しております

protected function beforeSave(){
    if(parent::beforeSave()){
        $this->holiday_date=date('Y-m-d',strtotime($this->holiday_date));

        return TRUE;
    }

    return false;
}
4

1 に答える 1

1

beforeValidate の日付形式を変更するかholiday_date、検証に合格した後に beforeSave が実行されるため、属性の検証ルールを変更する必要があります。

public function beforeValidate()
{
    if ($this->isNewRecord)
    {
        $this->holiday_date = date('Y-m-d', strtotime($this->holiday_date));
    }
    return parent::beforeValidate();
}
于 2013-03-05T11:30:08.373 に答える