Laravel多列雄辩搜索查询

问题描述:

我是非常新的Laravel,目前与Laravel4一起工作。我试图在我的项目中添加多列搜索功能。我可以做单列雄辩搜索查询,但老实说我不知道如何在laravel中做多列的雄辩搜索查询。我有两个下拉菜单Laravel多列雄辩搜索查询

1.Locatiom 2.血型。

我要搜索具有某些血型对某些位置。那是一个用户,用户将选择位置和来自这两个血型同时下拉菜单,打搜索按钮。

在我的数据库,我有两个列,一个包含位置,另一个包含特定用户的血型。现在,这样一个搜索的雄辩查询应该是什么?

简单的连锁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

这是一个好办法,但我的事有错误的地方作为laravel不会允许你访问一个非静态函数等等,而不是使用SomeModel::searchBloodGroup($bloodGroup)->searchLocation($location)->get();的,你可以简单地使用SomeModel::BloodGroup($bloodGroup)->Location($location)->get();

采取searchBloodGroup不有已更改为BlooGroup,这就是你将如何使用它的所有其他