2017-03-13 2 views
1

Ich versuche eine Suche durchzuführen, die Kontrollkästchen verwendet, um Ergebnisse in meinem Modell nachzuschlagen, und zeigt sie dann auf der Seite an.Durchführen einer einfachen Suche mit where() in Laravel

Meine Routen:

Route::get('parts/cpu', '[email protected]'); 
Route::get('parts/cpu/search', '[email protected]'); 

Meine Controller:

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')); 
} 

Meine Ansicht:

<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> 

Im den folgenden Fehler erhalten: Keine Abfrage-Ergebnisse für das Modell [App \ Processor] .

Dies ist das URL auf Suche angezeigt werden: /? Parts/cpu/search tech = Intel

Antwort

0

Es scheint ein Routing-Problem zu sein ...

wenn ich die Strecke und die Form Aktion Teile ändern/Suche und/Teile/Suche bzw. dann funktioniert es, es sieht so aus, als hätte Laravel eine gewisse Routenpriorität, die einen Konflikt verursacht.

Oder es könnte mit meinem Wildcard Weg stören, dass ich für die Innenraum Prozessor Detailseite eingerichtet habe:

Route::get('parts/cpu/{processor}', '[email protected]'); 

Wenn jemand auf auf diesem mehr Licht vergießen würde es sehr zu schätzen.

0

Versuchen Sie, diese

$query = Processor::query(); 
$processors = $query->where('tech', '=', $request->input('tech'))->get(); 
1

Es gibt keine Notwendigkeit, 2 Abfragen in Ihrer Datenbank ausgeführt haben.

ändern diese:

$processors = Processor::query(); 
$processors->where('tech', '=', $request->input('tech'))->get(); 

Um dies:

$processors = Processor::where('tech', '=', $request->input('tech'))->get(); 
+0

Es gibt immer noch keine Abfrage Ergebnisse – Rick

+0

gab es keine zwei Abfragen sowieso. –

+0

Mein Fehler, es gibt keine 2 Abfragen, aber er holt alle unerwünschten Daten vom Prozessor. @SanzeebAryal – Onix

Verwandte Themen