我正在尝试执行搜索,使用复选框在我的模型中查找结果,然后在页面上显示它们。
我的路线:
Route::get('parts/cpu', 'PartsController@cpuList');
Route::get('parts/cpu/search', 'PartsController@searchCpu');
我的控制器:
public function cpuList (){
$processors = Processor::all();
return view('parts.cpuList', compact('processors'));
}
public function searchCpu(Request $request){
$processors = Processor::query();
$processors->where('tech', '=', $request->input('tech'))->get();
return view('parts.cpuList', compact('processors'));
}
我的观点:
<form method="GET" action="/parts/cpu/search">
<div class="checkbox">
<label><input type="checkbox" name="tech" value="Intel">Intel</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="tech" value="AMD">AMD</label>
</div>
<input value="Submit" type="submit" class="pull-right btn btn-primary">
</form>
<ul class="list-group">
@foreach ($processors as $processor)
<li class="list-group-item clearfix"><a href="/parts/cpu/{{$processor->id}}">{{$processor->name}}</a></li>
@endforeach
</ul>
我收到以下错误:没有模型[App \ Processor]的查询结果。
这是搜索时显示的网址:/ parts / cpu / search?tech = Intel
答案 0 :(得分:1)
您的数据库中无需运行2个查询。
改变这个:
$processors = Processor::query();
$processors->where('tech', '=', $request->input('tech'))->get();
对此:
$processors = Processor::where('tech', '=', $request->input('tech'))->get();
答案 1 :(得分:0)
试试这个
$query = Processor::query();
$processors = $query->where('tech', '=', $request->input('tech'))->get();
答案 2 :(得分:0)
这似乎是路由问题......
如果我将路径和表单操作分别更改为parts / search和/ parts / search,那么它可以正常工作,看起来Laravel有一些优先级导致冲突。
或者它可能会干扰我为内部处理器详细信息页面设置的通配符路径:
Route::get('parts/cpu/{processor}', 'PartsController@cpuShow');
如果有人能够对此有所了解,我们将不胜感激。