Laravel多列口才搜索查询

时间:2014-09-01 05:51:35

标签: mysql sql laravel-4

我是Laravel的新手,目前正与Laravel4合作。我正在尝试在我的项目中添加多列搜索功能。我可以做单列雄辩的搜索查询,但老实说我不知道​​怎么做多列雄辩在laravel中搜索查询。我有两个下拉菜单

1.Locatiom 2.blood group。

我想针对某些位置搜索某个血型用户。也就是说,用户将选择位置< / strong>和血型一次从这两个下拉菜单中点击搜索按钮。

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

2 个答案:

答案 0 :(得分:35)

只需为您需要搜索的每个字段链接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();

只是一个明智的例子,根据您的需要进行调整。

答案 1 :(得分:0)

    $errors = $connection->table('test_sessions_table')
->where('user_id', $user->id)
->where('status_question', 'false')->count('status_question');

在这种方法中,您的代码采用以下形式 SQL代码

select count(`status_question`) as aggregate from `test_sessions_table` where `user_id` = ? and `status_question` = ?

或您的代码将显示如下

$errors = $connection->table('test_sessions_table')
->where('user_id', $user->id)
->orWhere('status_question', 'false')->count('status_question');

SQL代码

select count(`status_question`) as aggregate from `test_sessions_table` where `user_id` = ? or `status_question` = ?

我个人建议使用两个“ where”