Я делаю приложение, связанное с недвижимостью, и мне было трудно определить, как настроить запрос, чтобы он возвращал «Только квартиры или Дуплексы в выбранных областях «Я хотел бы, чтобы пользователь мог находить несколько типов собственности в нескольких выбранных квадрантах города.Laravel Eloquent: как фильтровать несколько и/или критерии одной таблицы
У меня есть база данных с колонки «типа», который является либо «квартира», «Дом», «Дуплекс», «Мобильный»
В другой колонке я quadrant_main со значениями: «NW», " SW "," NE "," SE ".
Мой код работает, когда выбран только один квадрант, но когда я выбираю несколько квадрантов, я, кажется, получаю результаты, которые включают ВСЕ типы свойств со второго или третьего или четвертого квадранта, а не только «Квартира» и «Квартира», Дуплекс "или любые типы, которые пользователь выбирает ... Любая помощь будет оценена! thx заранее.
Моя функция управления выглядит следующим образом:
public function quadrants()
{
$input = \Request::all();
$currentPage = null;
$column = "price";
$order = "desc";
//
// Looks like the input is like 0 => { key: value } ...
// (an Array of key/value pairs)
$q = Listing::where('status','=','Active')->where(function($query) {
$input = \Request::all();
$currentPage = null;
$typeCount = 0;
$quadrantCount = 0;
foreach($input as $index => $object) {
$tempObj = json_decode($object);
$key = key((array)$tempObj);
$val = current((array)$tempObj);
if ($key == "type") {
if ($typeCount > 0) {
$query->orWhere('type', '=', $val);
}
else {
$query->where('type', '=', $val);
$typeCount++;
}
}
if ($key == "quadrant_main") {
if ($quadrantCount > 0) {
$query->orWhere('quadrant_main', '=', $val);
}
else {
$query->where('quadrant_main', '=', $val);
$quadrantCount++;
}
}
// else {
// $query->orWhere($key,$val);
// }
}
if($currentPage) {
//Force Current Page to Page of Val
Paginator::currentPageResolver(function() use ($currentPage) {
return $currentPage;
});
}
});
$listings = $q->paginate(10);
return $listings;