【发布时间】:2017-03-25 15:11:06
【问题描述】:
在过去的两天里,我试图构建这个相对简单的搜索系统,但我就是想不通.. 基本上,我有一些选择标签,其中包含过滤用户的选项。 像这样的:
<div class="col-sm-4">
<label for="price">Price:</label><br>
<select class="browse-select" name="price">
<option>Any</option>
<option value="1">Less than 100$</option>
<option value="2">More than 100$</option>
</select>
</div>
<div class="col-sm-4">
<label for="delivery">Delivery:</label><br>
<select class="browse-select" name="delivery">
<option>Any</option>
<option value="1">1 month or less</option>
<option value="7">7 days or less</option>
<option value="3">3 days or less</option>
</select>
</div>
这些都在一个表单中(获取请求表单),这是我的控制器。
public function index(Request $request){
$users = User::paginate(10);
$service = Service::all();
//Search Logic
$category = $request->input('category');
$price = $request->input('price');
$delivery = $request->input('delivery');
$searchQuery = Service::with('user');
$searchQuery->where('category','=',$category);
if ($price == 1) { //price input has a value of 1 which means (less than 100)
$searchQuery->where('price','<',100)->where('category','=',$category);
}elseif($price == 2){
$searchQuery->where('price','>',100)->where('category','=',$category);
}
$result = $searchQuery->get();
return view('browse.index', compact('users','service','result'));
}
如您所见,我在用户和服务之间建立了关系。因为我需要访问用户的服务才能比较值并查询数据库。
到目前为止,我所拥有的,但仅适用于一个选择。如果我选择一个类别,那工作正常并显示用户。但是,如果我尝试例如选择一个类别和一个价格,那么它会返回所有用户。 我应该如何正确地做到这一点?我觉得我在这里错过了一些东西..
【问题讨论】:
标签: laravel laravel-5 laravel-5.3 laravel-5.4