laravel将stdclass对象转为对应model对象

2021-12-15  本文已影响0人  sherry_718

问题描述:laravel将model对象json_encode存入redis缓存,再次取缓存字符串,对其json_decode后变为stdclass对象,想初始化为mdel对象

转对象代码

    public static function fillMember(String $cache)
    {
        if ($cache) {
            $model = app(Member::class);
            $json = json_decode($cache);
            // member model中利用$casts将data转换为object,但是 json_decode后,data参数格式解析为stdclass
            // 为了member中data类型正常转换,初始化为数据库字符串格式,不然会报类型转换错误
            $json->data = json_encode($json->data);
            // 设置属性数据
            $model->setRawAttributes((array)$json, true);
            //需要将此属性设置为true,可以使用save操作进行更新
            $model->exists = true;
            return $model;
        }
        return null;
    }

Member一些片段代码

class Member extends Model 
{

    protected $casts = [
        'data' => 'object',
    ];
}
上一篇下一篇

猜你喜欢

热点阅读