2014-09-01 120 views
5

我是非常新的Laravel,目前與Laravel4一起工作。我試圖在我的項目中添加多列搜索功能。我可以做單列雄辯搜索查詢,但老實說我不知道如何在laravel中做多列的雄辯搜索查詢。我有兩個下拉菜單Laravel多列雄辯搜索查詢

1.Locatiom 2.血型。

我要搜索具有某些血型對某些位置。那是一個用戶,用戶將選擇位置和來自這兩個血型同時下拉菜單,打搜索按鈕。

在我的數據庫,我有兩個列,一個包含位置,另一個包含特定用戶的血型。現在,這樣一個搜索的雄辯查詢應該是什麼?

回答

24

簡單的連鎖where每個字段,你需要通過搜索:

// AND 
$results = SomeModel::where('location', $location)->where('blood_group', $bloodGroup)->get(); 

// OR 
$results = SomeModel::where('location', $location)->orWhere('blood_group', $bloodGroup)->get(); 

您可以更輕鬆地與感謝工作的範圍:

// SomeModel class 
public function scopeSearchLocation($query, $location) 
{ 
    if ($location) $query->where('location', $location); 
} 

public function scopeSearchBloodGroup($query, $bloodGroup) 
{ 
    if ($bloodGroup) $query->where('blood_group', $bloodGroup); 
} 

// then 
SomeModel::searchBloodGroup($bloodGroup)->searchLocation($location)->get(); 

只是一個明智的例子,對其進行調整滿足您的需求。

+0

非常感謝,這個答案似乎很有幫助.. – RTan 2014-09-01 06:43:56

0

這是一個好辦法,但我的事有錯誤的地方作爲laravel不會允許你訪問一個非靜態函數等等,而不是使用SomeModel::searchBloodGroup($bloodGroup)->searchLocation($location)->get();的,你可以簡單地使用SomeModel::BloodGroup($bloodGroup)->Location($location)->get();

採取searchBloodGroup不有已更改爲BlooGroup,這就是你將如何使用它的所有其他