在mysql数据库laravel9中以json形式存储和更新数组



我有要存储在数据库中的值,我已经将类型声明为json,并将其强制转换为数组:

protected $casts = [
'favourites' => 'array'
];

然而,我不知道如何添加、更新和阅读里面的值,有什么想法吗?控制器功能:

public function addtofav()
{
$id = request()->get('id');
$user = auth()->user();
json_decode($user->favourites,true);
array_push($user->favourites,$id);
dump('hello');
json_encode($user->favourites);
$user->save();
return response(['id'=> $id],200);
}

引用Laravel文档:

将数组强制转换添加到该属性将自动反序列化当您在Eloquent上访问PHP数组时,它的属性模型

因此,在进行任何更新或创建之前,无需对您的值进行任何编码或解码,只需将其保留为一个数组,Eloquent就会处理好这一点,因为您有如下的$cast数组:

protected $casts = [
'options' => 'array',
];

实际上应该使用多对多,但如果要使用数组,则不需要编码或解码。

public function addtofav()
{
$id = request()->get('id');
$user = auth()->user();
$favourites = $user->favourites;
array_push($favourites,$id);
$user->favourites = $favourites
$user->save();
return response(['id'=> $id],200);
}

最新更新