Người mới sử dụng PHP/Laravel ở đây vì vậy hãy kiên nhẫn.Truy vấn tìm kiếm Laravel với nhiều điều kiện
Tôi có trang web đang tìm kiếm dựa trên 3 tiêu chí cho chó, giống, giới tính và bán kính.
đây là mã có liên quan:
trang tìm kiếm
<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()
khi tôi nhập một tìm kiếm cho chó xù, nam, trong phạm vi 20 dặm, url cho thấy như sau:
http://ruff-love.dev/dogs?search-breed=poodle&sex=M&miles=20
Việc tìm kiếm hiện đang hoạt động ok khi tìm kiếm chỉ sinh sản.
Tôi không thể tìm ra cú pháp để thêm tiêu chí SEX và RADIUS. nên cho phép các tiêu chí đó là rỗng và vẫn thực hiện truy vấn.
bất kỳ lời khuyên nào sẽ được đánh giá rất cao
điều này có vẻ thực sự tốt nhưng có vẻ như tôi đã thiết lập cho ba giống tìm kiếm riêng biệt, hoặc giới tính hoặc bán kính chính xác? những gì tôi đã thực sự hy vọng để làm là có một tìm kiếm cho giống (mà đã hoạt động như là) và sau đó thêm vào các tùy chọn của tình dục và/hoặc bán kính. Tôi thích mã của bạn, ti dễ hiểu của nó hiểu đôi mắt mới của tôi nhưng bạn có thể cấu trúc lại nó để nó làm điều đó? – rommel109g
Bạn hiểu sai. Những gì nó làm là 1 chuẩn bị truy vấn, 2 thêm mỗi bộ lọc đó là cần thiết, 3 có được kết quả từ truy vấn được xây dựng. Kết quả là bạn sẽ nhận được những chú chó phù hợp với tất cả các ràng buộc đã cho, nhờ các câu lệnh 'if'. –