美文网首页
laravel将stdclass对象转为对应model对象

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

作者: sherry_718 | 来源:发表于2021-12-15 19:02 被阅读0次

    问题描述: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',
        ];
    }
    

    相关文章

      网友评论

          本文标题:laravel将stdclass对象转为对应model对象

          本文链接:https://www.haomeiwen.com/subject/lhmpfrtx.html