此代码:
$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();
...
答案 0 :(得分:-1)
最后解决方案:
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"))