Laravel MySQL JSON LIKE 查询

Laravel MySQL JSON LIKE Query

在 laravel 中使用 eloquent 我可以像这样使用 LIKE 查询:

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

即查询以字母a开头的列。我怎样才能在 json 列中做到这一点?

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

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

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

Returns 列包含字母 a 的结果。我只想查询以字母a开头的列。

我不确定这是否可行,但您可以试一试。它使用 MySQL 8 JSON search functions.

Model::where(DB::raw('meta->"$.column" LIKE "%a%"'))->get();

在MySQL中,meta->column的结果被JSON编码。您必须添加前导引号:

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

在 Laravel 5.6.28 中您可以使用 ->> operator:

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