Laravel MySQL JSON LIKE 查询

Deo*_*eon 2 mysql json laravel mysql-5.7 laravel-5.6

在 laravel 中使用 eloquent 我可以使用 LIKE 查询,如下所示:

Model::where('column', 'LIKE', 'a%');
Run Code Online (Sandbox Code Playgroud)

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

Model::where('meta->column', 'LIKE', 'a%');
Run Code Online (Sandbox Code Playgroud)

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

Model::where('meta->column', 'LIKE', '%a%');
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eir 6

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

Model::where('meta->column', 'LIKE', '"a%');
Run Code Online (Sandbox Code Playgroud)

在 Laravel 5.6.28 中,您可以使用->>运算符

Model::where('meta->>column', 'LIKE', 'a%');
Run Code Online (Sandbox Code Playgroud)