2017-01-30 98 views
5

我存儲destinations字段jsonmysqlJSON在laravel搜索雄辯

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

我想獲得匹配goa作爲目的地

不過該行查詢的所有行返回所需結果

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

但是是上述查詢的雄辯等價物?

Laravel 5.3版

MODELNAME:Search

+0

相關[內部提議](https://github.com/laravel/internals/issues/296)。 – sepehr

回答

5

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

use DB;(文件定義的頂部)

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

如果你有一個模型:

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

假設你上面的查詢中SQL的作品。

+0

我如何用這樣的變量替換'Goa'' $關鍵字='goa'' –

+0

只需要使用字符串連接我想? – Jonathan

+0

SQL語法錯誤'語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「正確的語法手冊」在1號線(SQL:選擇'finde_packages' *其中json_contains(目的地,「[‘果阿’]」)' –