JSON Search in laravel eloquent

2022-08-31 00:20:03

我正在将字段存储为键入destinationsjsonmysql

示例列值["Goa", "Moonar", "Kochi"]

我想获取所有匹配的行作为目标goa

但是,此行查询返回所需的结果

SELECT * FROM `packages` 
WHERE JSON_CONTAINS(destinations, '["Goa"]');

但是,与上述查询雄辩的等价物是什么?

拉拉维尔版本 5.3

型号名称 :Search


答案 1

可能被迫使用部分原始查询,例如:

use DB;(文件定义顶部)

DB::table('packages')->whereRaw('json_contains(destinations, \'["Goa"]\')')->get();

如果你有一个模型:

Package::whereRaw('json_contains(destinations, \'["' . $keyword . '"]\')')->get();

假设上面的查询在SQL中工作。


答案 2

在Laravel 5.6及更高版本中,您可以使用whereJsonContains方法:

Package::whereJsonContains('destinations',["Goa"])->get();

但并非所有数据库都支持它:https://laravel.com/docs/5.6/queries#json-where-clauses


推荐