在 mysql 数据库 laravel 9 中将数组存储和更新为 json

store and update an array as json in mysql database laravel 9

我有要存储在数据库中的值,我已将类型声明为 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);
}

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

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);
}

引自Laravel documenations

adding the array cast to that attribute will automatically deserialize the attribute to a PHP array when you access it on your Eloquent model.

因此,在任何更新或创建之前无需对您的值进行任何编码或解码,只需将其作为数组保存,Eloquent 会处理它,因为您将 $cast 数组作为以下:

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