2016-11-23 7 views
1

Wenn ich versuche, ein Modell mit diesem Code zu aktualisieren:Laravel: BadMethodCallException mit Nachricht 'Methodenupdate nicht vorhanden.'

public function updateMixedtape($slug, Request $request) 
{ 
    $mix = Mix::where('slug', $slug)->get(); 
    $mix->update($request->all()); 
    return redirect('dashboard/mixes'); 
} 

Ich erhalte eine Fehlermeldung, dass Methode update existiert nicht. Allerdings, wenn ich ändere meine Ansicht, die ein radio_show_id statt slug und versuche, zu senden, um den Code zu so etwas zu ändern:

public function updateMixedtape(Request $request) 
{ 
    $mix = Mix::findOrFail($request->radio_show_id); 
    $mix->update($request->all()); 
    return redirect('dashboard/mixes'); 
} 

Der Code führt ohne Fehler.

Was mich verwirrt ist, dass wenn ich so etwas wie vor der Zeile, wo ich die update Methode aufrufen, bekomme ich ähnliche Daten für beide Methoden.

+2

mit get() wird eine Collection() zurückgegeben. Kein Modell. Verwenden Sie einfach zuerst() anstelle von get() in Ihrem Fall –

+0

Danke .. Es hat funktioniert .. –

Antwort

0

Wie shock_gone_wild im Kommentarbereich meiner Frage $mix = Mix::where('slug', $slug)->get(); vorgeschlagen hat, ist eine Sammlung und kein Modell zurück. Dies liegt daran, dass eine Model::where()-Methode null, einen oder mehrere Datensätze zurückgeben kann, abhängig davon, ob Datensätze vorhanden sind, die die festgelegte Bedingung erfüllen.

Wie vorgeschlagen habe ich stattdessen $mix = Mix::where('slug', $slug)->first(); verwendet, um den ersten Datensatz zu erhalten, der die Bedingung erfüllt.

Verwandte Themen