如何在laravel中搜索Json

时间:2018-01-13 10:09:45

标签: json laravel eloquent

我有一个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

1 个答案:

答案 0 :(得分:0)

如果您正在寻找company_name,您应该更改您的查询。

$companies = Company::where('company_name', 'like',  '%'.$comma_separated.'%'.);

您正在将main_category与company_name进行比较。你也不应该需要尽可能多的where子句。由于您在json字符串中寻找一个简单的模式,逗号的定位方式并不重要。