Обновление поля JSON модели Eloquent

#mysql #json #laravel #model #eloquent

#mysql #json #laravel #Модель #eloquent

Вопрос:

Итак, у меня есть поле JSON в моей базе данных. Когда я обращаюсь к нему в моем объекте model, я получаю строку, поэтому мне приходится расшифровывать ее самостоятельно. Возможно ли получить к нему доступ как к объекту? Я мог бы определить средство доступа, но в этом случае я не смог бы его изменить.

Ответ №1:

Вы можете использовать Attribute Casting .

Давайте предположим, что в вашей пользовательской модели у вас есть options атрибут типа Json , поэтому все, что вы можете сделать, это добавить в свою пользовательскую модель:

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

И просто, если вы хотите отредактировать это поле, вы можете просто сделать это следующим образом :

 $user = AppUser::find(1);

$options = $user->options;

$options['key'] = 'value';

$user->options = $options;

$user->save();