Laravel雄辩JSON领域,选择属性产生额外的双引号

此代码:Laravel雄辩JSON领域,选择属性产生额外的双引号

$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"))

以上是 Laravel雄辩JSON领域,选择属性产生额外的双引号 的全部内容, 来源链接: utcz.com/qa/260075.html

回到顶部