如何向 json 值字段添加多个值并在 json 字段中有一个平面数组?

问题描述 投票:0回答:1

在 laravel 11 / php 8.2 应用程序中,我需要向 UserOption 模型的 json 值字段添加几个值 我用代码来做:

array_push($this->selectedCurrencies, array_values($userOption->value));
$userOption->value = array_values($this->selectedCurrencies);
$userOption->save();

但是在值字段中我看到新元素和旧值的子数组,而不是我需要的平面数组?

如何解决?

php laravel
1个回答
-1
投票

如果值字段是 json 来执行您想要的操作,则首先需要通过 json_decode 将值字段从 json 解码为数组。此外,在我看来,您想要做的是将 selectedCurrency 数组与 value 数组连接成一个唯一的数组并将其存储到模型中。

$valueArray = json_decode($userOption->value);
$userOption->value = json_encode( $this->selectedCurrencies + 
$valueArray);
$userOption->save();

仅当您想将新数组保存为 Json 时,我才使用 json_encode。如果你想要一个数组,你可以避免使用 json_encode。

并非每个具有序列化 json 字段的模型都会被设计为在每次检索字段时自动解码该字段。例如,让我们想象一下这样一种情况,您正在处理的项目有更多类型的请求需要使用该字段,例如 AJAX 调用可以更好地使用 JSON。在这种情况下,不确定您是否会拥有该模型的演员表。所以这种情况下的 Json_decode 更安全。您不必冒忘记该模型没有对感兴趣的 JSON 字段进行强制转换的风险。另一方面,如果您每次都开始考虑解码是自动的,那么您更容易出现错误,例如对于没有您正在使用的字段的强制转换的模型,不包括 json_decode 。

© www.soinside.com 2019 - 2024. All rights reserved.