我有一个json值表,需要从中搜索值我如何解码json以便我可以搜索它。我正在尝试实现类似查询但不适合我。
id country company_name Main_category
71 33 {"en":"hitech","ar":"hitech"} 14,22,24
代码:
$matchThese = [ 'country' => $request->input('country'),
'company_name' => $request->input('company_name'),
'main_category' => $request->input('main-category'),
];
$comma_separated = $request->input('company_name');
$companies = Company::where(function($q) use($comma_separated) {
$q->where('main_category', 'like', '%,' . $comma_separated . ',%');
$q->orWhere('main_category', 'like', $comma_separated . ',%');
$q->orWhere('main_category', 'like', '%,' . $comma_separated);
})
->where($matchThese)->orWhere($matchThese)
->orWhere('main_category', 'like', $comma_separated . ',%')->paginate('3');
如果我在hitech
上搜索它没有显示任何内容,因为main_category部分位于JSON
formate
答案 0 :(得分:0)
如果您正在寻找company_name,您应该更改您的查询。
$companies = Company::where('company_name', 'like', '%'.$comma_separated.'%'.);
您正在将main_category与company_name进行比较。你也不应该需要尽可能多的where子句。由于您在json字符串中寻找一个简单的模式,逗号的定位方式并不重要。