У меня есть расширенная форма поиска для фильтрации результатов из базы данных с использованием Laravel. Данные фильтруются правильно, но у меня есть требование, чтобы пользователь мог фильтровать по имени или фамилии, используя одно и то же текстовое поле (в расширенной форме). Я попробовал orWhere, чтобы убедиться, что он фильтрует поле имени с именем или фамилией, но orWhere не учитывает другие фильтры. Код, я использую выглядит следующим образом:Laravel: расширенный запрос формы поиска
DB::table('mytable')
->where(function($query) use ($name, $degree_s, $specialty_s, $city_s, $state_s, $lundbeck_id_s) {
if ($name)
$query->where('first_name', 'like', "$name%")->orWhere('last_name', 'like', "$name%"); # this is whats causing the issue
if ($specialty_s)
$query->where('primary_specialty', $specialty_s);
if ($city_s)
$query->where('city', $city_s);
if ($state_s)
$query->where('state_province', $state_s);
if ($lundbeck_id_s)
$query->where('customer_master_id', $lundbeck_id_s);
if ($degree_s)
$query->where('primary_degree', $degree_s);
})
->select('id', 'first_name','last_name')
Добавление пункт orWhere вызывает запрос не использовать другие условия, а также (как city_s или state_s).
Большое спасибо Marcin, это было решение, которое я внедрил –