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"))
灿你把点而不是 - >在data-> navigation_login这一行? – DrStein
Translation模型的表是否真的叫做'data'?你能否在表格模式中包含一些信息? –
@DrStein' - > select('data.navigation_login as navigation_login')'点不起作用。 **未知列'data.navigation_login'** – robcaa