Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Yii2中的AttributeBehavior将可读日期转换为mysql日期_Yii2 - Fatal编程技术网

使用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));
                },
            ],
        ];
   }

那么你根本不能使用模型属性?那么你根本不能使用模型属性?这是我的用例的格式问题,我就是这样解决的!这是我的用例的格式问题,我就是这样解决的!