[英]How can I make query where json column in the laravel?
我用 laravel 5.6
我有一个领域。 该字段的数据类型为json
字段(desc字段)的值是这样的:
[
{"code": "1", "club": "CHE", "country": "ENGLAND"},
{"code": "2", "club": "BAY", "country": "GERMANY"},
{"code": "3", "club": "JUV", "country": "ITALY"},
{"code": "4", "club": "RMA", "country": "SPAIN"},
{"code": "5", "club": "CHE", "country": "ENGLAND"},
{"code": "6", "club": "BAY", "country": "GERMANY"},
{"code": "7", "club": "JUV", "country": "ITALY"},
{"code": "8", "club": "RMA", "country": "SPAIN"},
{"code": "CODE", "club": "CLUB", "country": "COUNTRY"}
]
我想检查俱乐部的钥匙是否具有价值“CHE”
我这样尝试:
->where('desc->club','=', 'CHE')->get();
但它不起作用
我怎么解决这个问题?
我使用 Laravel 5.6
我有一个领域。 该字段的数据类型为json
字段(desc 字段)的值如下所示:
[
{"code": "1", "club": "CHE", "country": "ENGLAND"},
{"code": "2", "club": "BAY", "country": "GERMANY"},
{"code": "3", "club": "JUV", "country": "ITALY"},
{"code": "4", "club": "RMA", "country": "SPAIN"},
{"code": "5", "club": "CHE", "country": "ENGLAND"},
{"code": "6", "club": "BAY", "country": "GERMANY"},
{"code": "7", "club": "JUV", "country": "ITALY"},
{"code": "8", "club": "RMA", "country": "SPAIN"},
{"code": "CODE", "club": "CLUB", "country": "COUNTRY"}
]
我想检查俱乐部的钥匙是否有价值“CHE”
我尝试这样:
->where('desc->club','=', 'CHE')->get();
但它不起作用
我怎么解决这个问题?
我使用 Laravel 5.6
我有一个领域。 该字段的数据类型为json
字段(desc 字段)的值如下所示:
[
{"code": "1", "club": "CHE", "country": "ENGLAND"},
{"code": "2", "club": "BAY", "country": "GERMANY"},
{"code": "3", "club": "JUV", "country": "ITALY"},
{"code": "4", "club": "RMA", "country": "SPAIN"},
{"code": "5", "club": "CHE", "country": "ENGLAND"},
{"code": "6", "club": "BAY", "country": "GERMANY"},
{"code": "7", "club": "JUV", "country": "ITALY"},
{"code": "8", "club": "RMA", "country": "SPAIN"},
{"code": "CODE", "club": "CLUB", "country": "COUNTRY"}
]
我想检查俱乐部的钥匙是否有价值“CHE”
我尝试这样:
->where('desc->club','=', 'CHE')->get();
但它不起作用
我怎么解决这个问题?
我使用 Laravel 5.6
我有一个领域。 该字段的数据类型为json
字段(desc 字段)的值如下所示:
[
{"code": "1", "club": "CHE", "country": "ENGLAND"},
{"code": "2", "club": "BAY", "country": "GERMANY"},
{"code": "3", "club": "JUV", "country": "ITALY"},
{"code": "4", "club": "RMA", "country": "SPAIN"},
{"code": "5", "club": "CHE", "country": "ENGLAND"},
{"code": "6", "club": "BAY", "country": "GERMANY"},
{"code": "7", "club": "JUV", "country": "ITALY"},
{"code": "8", "club": "RMA", "country": "SPAIN"},
{"code": "CODE", "club": "CLUB", "country": "COUNTRY"}
]
我想检查俱乐部的钥匙是否有价值“CHE”
我尝试这样:
->where('desc->club','=', 'CHE')->get();
但它不起作用
我怎么解决这个问题?
我使用 Laravel 5.6
我有一个领域。 该字段的数据类型为json
字段(desc 字段)的值如下所示:
[
{"code": "1", "club": "CHE", "country": "ENGLAND"},
{"code": "2", "club": "BAY", "country": "GERMANY"},
{"code": "3", "club": "JUV", "country": "ITALY"},
{"code": "4", "club": "RMA", "country": "SPAIN"},
{"code": "5", "club": "CHE", "country": "ENGLAND"},
{"code": "6", "club": "BAY", "country": "GERMANY"},
{"code": "7", "club": "JUV", "country": "ITALY"},
{"code": "8", "club": "RMA", "country": "SPAIN"},
{"code": "CODE", "club": "CLUB", "country": "COUNTRY"}
]
我想检查俱乐部的钥匙是否有价值“CHE”
我尝试这样:
->where('desc->club','=', 'CHE')->get();
但它不起作用
我怎么解决这个问题?
MyModel::whereJsonContains('desc->club', 'CHE')->first();
您可以将此 scope 添加到 model 并使用
public function scopeJsonArrayHasCondition($query , $col , $keys , $function , $as = 'temp_table')
{
$columns = [];
foreach ($keys as $key){
$columns[] = "$key VARCHAR(150) PATH '$.$key'";
}
$columns = implode(',',$columns);
return $query->join(\DB::raw("JSON_TABLE($col, '$[*]' COLUMNS($columns)) as $as") , function(){})
->where($function);
}
如何使用
BranchContract::query()->jsonArrayHasCondition('payments',[
'club' , 'country'
],function ($q){
$q->where('temp_table.country' , 'ENGLAND')->where('temp_table.club' , 'CHE');
})->get()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.