2016-02-10 99 views
0

我要搜索特定的單詞,而不是從表信。現在,我使用like但它不是像預期:Laravel搜索特定的詞

// Category Table 
----------------------------------------------------- 
| id  | amount   | updated_at  | 
+----------+--------------------+-------------------+ 
| 1  | Bread    |2016-02-10 13:17:29| 
| 2  | Bread Loaf   |2016-02-10 13:17:29| 
| 3  | Bread1    |2016-02-10 13:17:29| 
+----------+--------------------+-------------------+ 

比如我搜索詞「麪包」:

$words = "bread"; 
$query = Category::where(function ($query) use ($words) { 
       $query->where('name', 'like', '%' . $words . '%'); 
     })->get(); 

結果:所有面包出來。

我的預期是什麼「Bread1」沒有得到查詢。只有麪包和麪包麪包。

我應該添加到我的查詢?

+2

你可能想試試這個SELECT * FROM產品WHERE PRODUCT_NAME RLIKE 「[[:<:]]bread[[:>:]]」; [同樣的問題在這裏](http://stackoverflow.com/questions/5743177/mysql-how-to-search-for-exact-word-match-using-like) –

+0

本質上,這被評價爲'WHERE名稱LIKE「%麪包%''意思是它可以與麪包中的任何東西相匹配。它不會將其評估爲單詞。如果你只是添加空格,它不會匹配以麪包開始或結束的任何內容。正則表達式約翰羅卡給出了一個很好的解決方案。 – Devon

+0

@JohnRoca謝謝。它工作 – ssuhat

回答

0

你可能想試試這個SELECT * FROM產品WHERE PRODUCT_NAME RLIKE 「[[:<:]麪包[[:>:]]」; Same Question Here