У меня есть форма поиска, чтобы перечислить свойства / объявления по определенным критериям. Моя форма поиска работает, но я не получаю желаемых результатов при поиске с несколькими фильтрами. У меня есть три типа фильтров. Заявка на покупку недвижимости (спрос, предложение), Оплата имущества (покупка, аренда), Тип недвижимости (дом, квартира, гараж). Например, когда я нажимаю, чтобы искать по запросу, купить, дом, он возвращает один результат, где есть спрос, покупка, дом, и еще два, где есть покупка и дом, но там третий параметр - предложение. Я стараюсь добиться того, чтобы фильтр удовлетворял всем трем условиям, а не только двум. Любая помощь приветствуется. Вот мой код.
CategoryController.php
<?php
namespace App\Http\Controllers;
use App\Category;
use App\Property;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;
class CategoryController extends Controller
{
public function index()
{
return view('categories.search', compact('data'));
}
public function search($propertyBidAsk, $propertyPayment, $propertyType, $city, $price, $quadrature, Request $request, Property $property)
{
$category = $property->category;
if (!empty($request->propertyBidAsk)) {
$property = Property::whereHas('category', function ($query) use ($request) {
$query->where('category', 'like', '%' . $request->propertyBidAsk . '%');
})->get();
}
if (!empty($request->propertyPayment)) {
$property = Property::whereHas('category', function ($query) use ($request) {
$query->where('category', 'like', '%' . $request->propertyPayment . '%');
})->get();
}
if (!empty($request->propertyType)) {
$property = Property::whereHas('category', function ($query) use ($request) {
$query->where('category', 'like', '%' . $request->propertyType . '%');
})->get();
}
$results = $property;
return view('categories.search', compact('category', 'results'));
}
}
search.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="py-5 text-center">
<h2>Search</h2>
</div>
<div class="row justify-content-md-center">
<div class="col-md-8 order-md-1">
<div>
@if(isset($results))
<table class="table">
<thead>
<th>Property Bid Ask</th>
<th>Property Payment</th>
<th>Property Type</th>
</thead>
<tbody>
@foreach ($results as $result)
<tr>
<td>{{ $result->category[0]->category }}</td>
<td>{{ $result->category[1]->category }}</td>
<td>{{ $result->category[2]->category }}</td>
</tr>
@endforeach
</tbody>
</table>
@endif
<form id="searchForm" method="GET" action="/search">
<div class="row">
<hr class="mb-4">
<div class="row">
<div class="col-md-4 mb-6">
<h5>Payment</h4>
<div class="d-block my-3">
<div class="custom-control custom-radio">
<input id="offer" name="propertyBidAsk" value="offer" type="radio" class="custom-control-input">
<label class="custom-control-label" for="offer">offer</label>
</div>
<div class="custom-control custom-radio">
<input id="demand" name="propertyBidAsk" value="demand" type="radio" class="custom-control-input">
<label class="custom-control-label" for="demand">demand</label>
</div>
</div>
</div>
<div class="col-md-3 mb-6">
<h5>Property payment</h4>
<div class="d-block my-3">
<div class="custom-control custom-radio">
<input id="buy" name="propertyPayment" value="buy" type="radio" class="custom-control-input">
<label class="custom-control-label" for="buy">buy</label>
</div>
<div class="custom-control custom-radio">
<input id="rent" name="propertyPayment" value="rent" type="radio" class="custom-control-input">
<label class="custom-control-label" for="rent">rent</label>
</div>
</div>
</div>
<div class="col-md-5 mb-6">
<h5>Property type</h4>
<div class="d-block my-3 ">
<div class="custom-control custom-radio">
<input id="house" name="propertyType" value="house" type="radio" class="custom-control-input">
<label class="custom-control-label" for="house">Kucahouse/label>
</div>
<div class="custom-control custom-radio">
<input id="flat" name="propertyType" value="flat" type="radio" class="custom-control-input">
<label class="custom-control-label" for="flat">flat</label>
<div class="custom-control custom-radio">
<input id="garage" name="propertyType" value="garage" type="radio" class="custom-control-input">
<label class="custom-control-label" for="garage">garage</label>
</div>
</div>
</div>
</div>
<hr class="mb-4">
<button class="btn btn-primary btn-lg btn-block">Search</button>
</form>
<script>
var onSubmitFunc = function(e){
e.preventDefault();
e.stopPropagation();
if( e.stopImmediatePropagation ){
e.stopImmediatePropagation();
}
var propertyBidAsk = this["propertyBidAsk"].value.trim() || 0;
var propertyPayment = this["propertyPayment"].value.trim() || 0;
var propertyType = this["propertyType"].value.trim() || 0;
url = propertyBidAsk.length === 0 ? '' : ( '/' + encodeURIComponent(propertyBidAsk) );
url += propertyPayment.length === 0 ? '' : ( '/' + encodeURIComponent(propertyPayment) );
url += propertyType.length === 0 ? '' : ( '/' + encodeURIComponent(propertyType) );
window.location.href = this.action + url;
}
document.addEventListener( 'DOMContentLoaded', function(){
var srch = document.getElementById("searchForm");
srch.addEventListener('submit', onSubmitFunc, false);
}, false );
</script>
</div>
</div>
</div>
@endsection