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, вот как вы будете использовать его для всех остальных тоже.