gpt4 book ai didi

json - Laravel eloquent JSON 字段,选择属性会产生额外的双引号

转载 作者:行者123 更新时间:2023-12-04 23:56:32 33 4
gpt4 key购买 nike

这段代码:

$translation = Translation::where('language_id', 2)
->whereNotNull('data->navigation_login')
->select('data->navigation_login as navigation_login')
->first()
->toArray();
dd($translation);

产生这个结果:
array(1) {["navigation_login"]=> string(7) ""Login"" }
问题是登录字符串周围有额外的双引号:""Login""

我怎样才能消除这种情况?

如果我在没有选择的情况下运行 aboe 代码:
$translation = Translation::where('language_id', 2)
->whereNotNull('data->navigation_login')
->first()
->toArray();
dd($translation);

没有双引号:
["data"]=>
array(3) {
["navigation_login"]=>
string(5) "Login"
["navigation_order"]=>
string(5) "Order"
["navigation_registration"]=>
string(7) "Sign up"
}

这是模型的详细信息:
...
class Translation extends Model {

protected $casts = [
'data' => 'array',
];
...

这是架构详细信息:
...
$table->json('data')->nullable();
...

最佳答案

最后解决办法:

MySQL 5.7.13 及更高版本

Using the unquoting extraction operator ->>
->select('data->>navigation_login as navigation_login')

或较旧的 mysql 版本 5.7 < MYSQL < 5.7.13
->select(\DB::raw("JSON_UNQUOTE(JSON_EXTRACT(data, '$.navigation_login')) as navigation_login"))

关于json - Laravel eloquent JSON 字段,选择属性会产生额外的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47616701/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com