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',
];
}