这是json数组
"section_4": {
"data": [
{
"grade": "3.0",
"degree": "BSCSE",
"end_date": "2019-03-28T10:35:00.000Z",
"institute": "DIU",
"start_date": "2019-03-25T10:35:00.000Z"
},
{
"grade": "4.0",
"degree": "BSCSE",
"end_date": "2019-04-30T10:50:00.000Z",
"institute": "STU",
"start_date": "2019-03-31T10:50:00.000Z"
}
],
"type": "education",
"title": "Educations"
},
想按年级搜索,可以用查询生成器搜索吗?
$resumes = UserMeta::with(['user.resume' => function ($query) {
$query->where('data->section_4->type', 'like', '%education%');
}])->paginate(10);
这是尝试在控制器中搜索的代码。可以使用查询生成器laravel进行等级搜索吗?
答案 0 :(得分:0)
Laravel提供了whereJsonContains
,因此您可以尝试以下代码:
$resumes = UserMeta::with(['user.resume' => function ($query) {
$query->whereJsonContains('data->section_4->type', 'like', '%education%');
}])->paginate(10);
OR
您还可以在这种情况下结合使用whereRaw
和JSON_CONTAINS
:
例如
whereRaw("JSON_CONTAINS(type, '[education]' )")->get();
有关更多信息,请检查此post
答案 1 :(得分:0)
要在 Laravel 中的 json 数组中搜索,您可以使用以下命令: 例如,您希望从“数据”数组中检查“等级”中的值:
$resumes = UserMeta::with(['user.resume' => function ($query) {
$query->whereJsonContains('data->data', ['grade' => "3.0"]);
}])->paginate(10);
完成....