Newbie do PHP/Laravel tutaj, więc proszę o cierpliwość.Laravel zapytanie wyszukiwania z wieloma warunkami
Mam stronę, która wyszukuje w oparciu o 3 kryteria dla psów, rasy, płci i promienia.
tutaj jest odpowiedni kod:
strona wyszukiwania
<div class="col-md-12 zero-pad-left zero-pad-right">
{{ Form::open(array('action' => array('[email protected]'), 'class'=>'form width88', 'role'=>'search', 'method' => 'GET')) }}
<div id="prefetch">
{{ Form::text('search-breed', null, array('class' => 'typeahead form-group form-control', 'placeholder' => 'Search by breed here...')) }}
{{ Form::text('sex', null, array('class' => 'form-group form-control', 'placeholder' => 'Search by sex here...')) }}
{{ Form::text('miles', null, array('class' => 'form-group form-control', 'placeholder' => 'Search by distance here...')) }}
</div>
{{ Form::submit('Search', array('class' => 'btn btn-default search-bar-btn')) }}
{{ Form::close() }}
ControllerPage
class DogsController extends \BaseController {
public function __construct()
{
// call base controller constructor
parent::__construct();
// run auth filter before all methods on this controller except index and show
$this->beforeFilter('auth', array('except' => array('show')));
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
if (Input::has('search')) {
$queryString = Input::get('search');
$dogs = Dog::where('name', 'LIKE', "%$queryString%")->orderBy('name')->paginate(5);
}
elseif (Input::has('search-breed'))
{
$dogs = Dog::whereHas('breed', function($q)
{
$queryString = Input::get('search-breed');
$q->where('name', 'LIKE', "%$queryString%");
})->orderBy('name')->paginate(5);
} //end elseif
else {
$dogs = Dog::orderBy('name')->paginate(5);
} //end else
return View::make('dogs.index')->with(array('dogs' => $dogs));
} //end function index()
kiedy wchodzi poszukiwanie pudel, mężczyzna, w promieniu 20 mil adres URL przedstawia się następująco:
http://ruff-love.dev/dogs?search-breed=poodle&sex=M&miles=20
Wyszukiwanie obecnie działa poprawnie podczas wyszukiwania tylko rasy.
Nie mogę znaleźć składni, aby dodać również kryteria SEX i RADIUS. powinno pozwolić, aby te kryteria były puste i nadal wykonywać zapytanie.
wszelkie porady byłyby znacznie apprecaited
to wygląda naprawdę dobrze, ale wygląda na to, że skonfigurowałeś go dla trzech różnych wyszukiwań, płci lub promienia? to, co naprawdę chciałem zrobić, to poszukać rasy (która już działa tak, jak jest), a następnie dodać opcje seksu i/lub promienia. Podoba mi się twój kod, łatwe do zrozumienia dla moich nowicjuszy, ale czy możesz go zmienić, aby to zrobił? – rommel109g
Źle. To, co robi, to 1 przygotować zapytanie, 2 dodać każdy filtr, który jest niezbędny, 3 uzyskać wynik z wbudowanego zapytania. W rezultacie otrzymasz psy pasujące do wszystkich danych ograniczeń, dzięki instrukcjom "if". –