我在destinations
json
字段存储为mysql
类型
示例列值["Goa", "Moonar", "Kochi"]
我想将所有匹配goa
的行作为目标
但是,此行查询会返回所需的结果
SELECT * FROM `packages`
WHERE JSON_CONTAINS(destinations, '["Goa"]');
但是上述查询的雄辩等价是什么?
Laravel版本5.3
型号名称:Search
答案 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