Laravel MySQL JSON LIKE查询

时间:2018-07-27 15:04:42

标签: mysql json laravel laravel-5.6 mysql-5.7

在雄辩的laravel中,我可以像这样使用LIKE查询:

Model::where('column', 'LIKE', 'a%');

该查询以字母a开头的列。我该如何在json列中做到这一点?

Model::where('meta->column', 'LIKE', 'a%');

我尝试过,但是在这样查询时没有得到任何结果:

Model::where('meta->column', 'LIKE', '%a%');

返回结果,其中列包含字母a。我只想查询以字母a开头的列。

2 个答案:

答案 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();