2015-05-29 151 views
2

我要搜索其LANG_ID = 1的網頁,我使用以下laravel查詢orWhere給人意想不到的結果

$result = $this->where('lang_id', $this->langId); 
$result->where('title', 'LIKE', '%'.$search.'%') 
     ->orWhere('description', 'LIKE', '%'.$search.'%'); 
$result->get(); 

它給了我比1 LANG_ID其他太頁面。

如何解決?

回答

1

這是因爲您構建查詢以返回所有具有此lang_id和title的記錄,或者以某個搜索關鍵字開始的描述。這就是爲什麼你會得到另一個結果,因爲其中一些不符合lang_id要求,但他們符合描述匹配。

你需要將你那裏的條件不好,是這樣的:

$result = $this->where('lang_id', $this->langId) 
->where(function ($query) use ($search) { 
    $query->where('title', 'LIKE', '%'.$search.'%')->orWhere('description', 'LIKE', '%'.$search.'%') 
}); 
$result->get(); 

這等於:

SELECT * FROM table WHERE lang_id = $lang_id AND (
    title LIKE '%$search%' OR description LIKE '%$search%' 
) 
+0

謝謝你幫仍然存在,我們需要通過使用$搜索錯誤否則會給出例外。 – alishaukat

+0

@alishaukat你是對的我編輯了我的答案。 – shaddy

相關問題