JSON搜索laravel雄辩

时间:2017-01-30 17:55:18

标签: php mysql laravel-5

我在destinations

中将json字段存储为mysql类型

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

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

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

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

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

Laravel版本5.3

型号名称:Search

2 个答案:

答案 0 :(得分:8)

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

use DB;(文件定义顶部)

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

如果你有模特:

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

假设您的上述查询在SQL中有效。

答案 1 :(得分:1)

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

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

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