Нет необходимости сериализовать JSON свойства вручную. Вместо этого вы можете использовать свойство $casts
Eloquent, чтобы определить, что ваш options
должен рассматриваться как объект:
class User
{
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'options' => 'object',
];
}
Затем вы можете назначить массивы и объекты этому свойству. Eloquent будет хранить его как JSON в фоновом режиме. При извлечении свойства Eloquent снова преобразует его в объект:
public function update(Request $request) {
$user = $this->user;
$user->options = [
'cart' => $request->only('product_id', 'code', 'product_slug', 'pic_url', 'request')
];
$user->save();
return response()->json($user);
}