Laravel несколько столбцов красноречивый поисковый запрос

Я очень новичок в Laravel, в настоящее время работаю с Laravel4.Я пытаюсь добавить функцию поиска нескольких столбцов в свой проект.Я могу сделать один столбец красноречивый поисковый запрос, но, честно говоря, я понятия не имею, как сделать несколько столбцов красноречивый поисковый запрос в laravel.У меня два выпадающих меню

1.Locatiom 2.группа крови.

Я хочу найти пользователей имеющего определенные группа крови в отношении определенных расположение.То есть пользователь выберет расположение и группа крови из этих двух выпадающего меню и нажмите кнопку "Поиск".

в моей базе данных у меня есть два столбца, один содержит расположение а другой содержит группа крови конкретного пользователя. Итак, каков должен быть красноречивый запрос для такого поиска?

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();

просто разумный пример, настройте его под свои нужды.


Это отличный способ, но я думаю, что где-то есть ошибка, поскольку laravel не позволит вам получить доступ к нестатической функции, поэтому вместо использования

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

вы можете просто использовать

SomeModel::BloodGroup($bloodGroup)->Location($location)->get();

обратите внимание на searchBloodGroup было изменено на BloodGroup, вот как вы будете использовать его для всех остальных тоже.