2016-02-10 97 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