@RobQwerty

Как отредактировать JSON?

У меня есть поле User внутри которого есть столбец balance(тип TEXT ) ,который должен хранить json данные по типу
{"BTC": {
		"Bitcoin_wallet": "NULL",
		"Bitcoin_balance": "0.00"
	},
"ETH": {
		"Ether_wallet": "NULL",
		"Ether_balance": "0.00"
	}
}

в модели Users: protected $casts = ['balance' => 'object'] есть.
Вызвав dd($user->balance->BTC); четко показывает значение :

61faa3886e06d604725110.png

Но при попытке редактировать ,например Ether_wallet, и сохранить новые значение - стирает все данные из столбца и заменяет старые данные на {"NULL":"здесь данные инпута"}.

Пытаюсь сохранить данные таким образом :
$in['balance']=$user->balance;
$in['balance'] = [
              $user->balance->BTC->Bitcoin_wallet => $request->Bitcoin_wallet,
              $user->balance->ETH->Ether_wallet => $request->Ether_wallet
]

Что я делаю не правильно?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
1. Лучше использовать не TEXT а JSON

2. В документации есть об этом упоминание. Для установки вложенных значений:

2.1 используется запись со стрелкой

$casts = [
  'balance' => 'array',
];

$user->balance['BTS->Bitcoin_wallet'] = '';


2.2 Можно использовать специальный каст для этого

$casts = [
  'balance' => AsArrayObject::class,
];

$user->balance['BTS']['Bitcoin_wallet'] = '';


Если я ничего не напутал. Сверьтесь с документацией.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы