2016-01-25 50 views
1

我想按用戶可以進行的選擇進行排序,其中的項目存儲在數據庫的「類型」表中。我正在使用laravel 5.2。多重選擇功能的有限功能的Laravel查詢生成器

截圖(在dansih文本):

enter image description here

它們可以例如選擇(在多選): 蘋果 香蕉 椰子 西瓜

如果他們只選擇蘋果,所有的蘋果應顯示 - 很容易。 但是,如果他們選擇蘋果和椰子,蘋果和椰子應顯示。

$query = User::where('type', '=', 'Apple')->get(); 

得到所有的蘋果。

但是,如果我這樣做:

誰選擇了蘋果和椰子
$query = User::where('type', '=', 'Apple')->where('type', '=', 'Coconut')->get(); 

只有用戶將被顯示。用戶不可能在後端選擇蘋果和椰子,因此不會顯示用戶。

如何建立一個查詢,其中用戶在後端選擇了Apple或Coconut類型的用戶將通過構建一個不限制輸出的查詢來顯示,只有當用戶選擇了這兩個查詢用戶可能)?

+0

使用'orWhere' –

回答

2

您可以使用:

$query = User::where(function($query) { 
$query->where('type', '=', 'Apple') 
->orWhere('type', '=', 'Coconut'); 
)}->get(); 

這將讓這兩個椰子和蘋果..

1

如果你正在尋找限制結果Apple小號Coconut S,你應該使用正確的->orWhere()說法,而不是另一->where()。默認情況下,鏈接->where()子句將導致WHERE ... AND ... AND ...。改變你的$query到:

$query = User::where('type', '=', 'Apple')->orWhere('type', '=', 'Coconut')->get(); 

將導致查詢WHERE ... OR ...,並且將結果限制爲Apple S或Coconut秒。