在laravel中,我可以使用以下类似的查询:
Model::where('column', 'LIKE', 'a%');
查询以字母a开头的列。如何在json列中执行此操作?。
Model::where('meta->column', 'LIKE', 'a%');
我试过了,但没有得到任何结果,像这样查询:
Model::where('meta->column', 'LIKE', '%a%');
返回列包含字母a的结果。我只想查询以字母a开头的列。
8yoxcaq71#
在mysql中 meta->column 是json编码的。必须添加前导引号:
meta->column
Model::where('meta->column', 'LIKE', '"a%');
在laravel 5.6.28中,可以使用 ->> 操作员:
->>
Model::where('meta->>column', 'LIKE', 'a%');
dsekswqp2#
我不确定这是否行得通,但你可以试试。它使用mysql 8 json搜索函数。
Model::where(DB::raw('meta->"$.column" LIKE "%a%"'))->get();
2条答案
按热度按时间8yoxcaq71#
在mysql中
meta->column
是json编码的。必须添加前导引号:在laravel 5.6.28中,可以使用
->>
操作员:dsekswqp2#
我不确定这是否行得通,但你可以试试。它使用mysql 8 json搜索函数。