使用Yii2中的AttributeBehavior将可读日期转换为mysql日期
正在尝试转换格式为使用Yii2中的AttributeBehavior将可读日期转换为mysql日期,yii2,Yii2,正在尝试转换格式为md,yyyy的日期,以将其保存为Y-M-d保存到数据库,因此我设置了我的行为: public function behaviors() { return [ [ 'class' => AttributeBehavior::className(), 'attributes' => [ ActiveRecor
md,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\u available=date('Y-m-d',strottime($model->date\u available))代码>
它在behave中运行良好,$this->date\u available是空的。在$value中,您不能使用$this->date\u available。在behave中,$this->date\u available是空的。在$value中,您不能使用$this->date\u available。这里是一个关于Yi2.0.10的工作示例
使用行为方法添加模型类。还要注意字符串转换,如果日期以mm/dd/yyyy格式返回到mm-dd-yyyy,则转换为DB date格式并保存
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));
},
],
];
}
下面是一个关于Yii2.0.10的工作示例
使用行为方法添加模型类。还要注意字符串转换,如果日期以mm/dd/yyyy格式返回到mm-dd-yyyy,则转换为DB date格式并保存
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));
},
],
];
}
那么你根本不能使用模型属性?那么你根本不能使用模型属性?这是我的用例的格式问题,我就是这样解决的!这是我的用例的格式问题,我就是这样解决的!