在雄辩的laravel中,我可以像这样使用LIKE查询:
Model::where('column', 'LIKE', 'a%');
该查询以字母a开头的列。我该如何在json列中做到这一点?
Model::where('meta->column', 'LIKE', 'a%');
我尝试过,但是在这样查询时没有得到任何结果:
Model::where('meta->column', 'LIKE', '%a%');
返回结果,其中列包含字母a。我只想查询以字母a开头的列。
答案 0 :(得分:3)
在MySQL中,meta->column
的结果是JSON编码的。您必须添加引号:
Model::where('meta->column', 'LIKE', '"a%');
在Laravel 5.6.28中,您可以使用->>
operator:
Model::where('meta->>column', 'LIKE', 'a%');
答案 1 :(得分:0)
我不确定这是否行得通,但您可以试一试。它使用MySQL 8 JSON search functions。
Model::where(DB::raw('meta->"$.column" LIKE "%a%"'))->get();