所以我有一个像这样的用户结构:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('username');
$table->text('phone');
$table->string('address');
$table->string('city');
$table->string('state');
$table->string('country');
$table->string('postal');
$table->string('email')->unique();
$table->string('password');
$table->string('google2fa_secret');
$table->text('balance');
$table->rememberToken();
$table->timestamps();
});
现在,我将值存储在'balance'列中,如此
{
"usd": 10,
"gbp": 10,
"eur": 10
}
如何编辑示例usd
值,但保留数组中的其他值?
我如何获得属性:
/**
* Get the user's balance
*
* @return decimal
*/
public function getBalanceAttribute()
{
return json_decode( $this->attributes['balance'] );
}
答案 0 :(得分:0)
假设您的用户希望按ID获取然后更新,那么您可以执行以下操作:
DB::table('users')
->where('id', 1)
->update(['balance->usd' => 12]);
但请确保这是json
列,我的意思是您需要在迁移中定义$table->json('balance');
。然后,您不需要访问者获取json_encode
属性。
有关详细信息,请查看documentation部分。