我的数据库中有一个列用于保存用户的设置。数据结构如下所示:
{"email":{"subscriptions":"{\"Foo\":true,\"Bar\":false}"}}
我正在使用 vue 切换来更改每个属性的状态(真/假)。一切似乎都正常,但是当我保存时,我会清除结构并保存更新的值,如下所示:
{\"Foo\":true,\"Bar\":false}"}
php
$user = auth()->user();
$array = json_decode($user->preferences['email']['subscriptions'], true);
dd($array);
上面的内容让我明白:
array:2 [
"Foo" => true
"Bar" => false
]
到目前为止,一切都很好...
$preferences = array_merge($array, $request->all());
dd($preferences);
Gets me:
array:2 [
"Foo" => true
"Bar" => true
]
太棒了 - 这些值现在正在获取从 axios 请求传入的值。接下来;更新用户数据:
$user->update(compact('preferences'));
现在我的数据如下所示:
{"Foo":true,"Bar":true}
这些值不再嵌套;我已经消灭了email
and subscriptions
.
我试过这个:
$user->update([$user->preferences['email']['subscriptions'] => json_encode($preferences)]);
但似乎没有保存数据。我怎样才能使用$preferences
变量来更新数据 - 并保持数据正确嵌套?