尝试将格式为M d, yyyy
的日期转换为Y-m-d
保存到数据库,以便设置我的行为:
public function behaviors() {
return [
[
'class' => AttributeBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => [ 'date_available' ],
ActiveRecord::EVENT_BEFORE_UPDATE => [ 'date_available' ],
],
'value' => function ( $event ) {
return date( 'Y-m-d', strtotime( $this->date_available ) );
},
],
]
}
但是在保存时,数据库字段是0000-00-00。如果我在actionUpdate中执行此操作:
$model->date_available = date( 'Y-m-d', strtotime( $model->date_available ) );
一切正常
答案 0 :(得分:2)
以下是Yii2 2.0.10上的一个工作示例
使用behavior方法添加模型类。如果日期以mm / dd / yyyy返回到mm-dd-yyyy,则请注意字符串转换,然后转换为DB日期格式并保存。
public function behaviors() {
return [
[
'class' => AttributeBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['start_date'],
ActiveRecord::EVENT_BEFORE_UPDATE => ['start_date'],
],
'value' => function ($event) {
return date('Y-m-d', strtotime($this->start_date));
},
],
[
'class' => AttributeBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['stop_date'],
ActiveRecord::EVENT_BEFORE_UPDATE => ['stop_date'],
],
'value' => function ($event) {
return date('Y-m-d', strtotime($this->stop_date));
},
],
];
}
答案 1 :(得分:0)
在行为中,$ this-> date_available为empty.in $ value,您不能使用$ this-> date_available。