#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();