2014-12-02 12 views
8

Ich versuche, einen Benutzer auf der Grundlage der E-Mail nicht dort ID zu aktualisieren, gibt es eine Möglichkeit, dies ohne rohe Abfragen zu tun.Laravel Update Abfrage

Zur Zeit der Fehler

{ "Fehler": { "type": "Error", "message": "Objekt Standard Erstellen von leeren Wert", "Datei": "C : \ wamp \ www \ celeb-jim \ app \ Controller \ SignupController.php“, "Linie": 189}}

My-Code

public function changeAccountStatus ($plan, $userEmail){ 
     $UpdateDetails = User::where('email', '=', $userEmail)->first(); 
     $UpdateDetails->member_type = $plan; 
     $UpdateDetails->save(); 
    } 
+0

Und was ist in Zeile "189"? –

Antwort

5

Dieser Fehler würde darauf hinweisen, dass User::where('email', '=', $userEmail)->first() null zurückgibt, anstatt ein Problem mit der Aktualisierung Ihres Modells.

Überprüfen Sie, ob Sie tatsächlich einen Benutzer haben, bevor Sie versuchen, die Eigenschaften zu ändern, oder verwenden Sie die firstOrFail()-Methode.

$UpdateDetails = User::where('email', $userEmail)->first(); 

if (is_null($UpdateDetails)) { 
    return false; 
} 

oder mit der firstOrFail() Methode, Theres keine Notwendigkeit, zu überprüfen, ob der Benutzer null ist, weil diese eine Ausnahme (ModelNotFoundException), wenn ein Modell gefunden wirft nicht, die Sie App::error()http://laravel.com/docs/4.2/errors#handling-errors

mit fangen können
$UpdateDetails = User::where('email', $userEmail)->firstOrFail(); 
4

Sie die Laravel query builder verwenden könnte, aber dies ist nicht der beste Weg, es zu tun.

Überprüfen Sie Wader's answer below für den eloquenten Weg - was ist besser, da Sie überprüfen können, ob es tatsächlich einen Benutzer gibt, der die E-Mail-Adresse übereinstimmt, und den Fehler behandeln, wenn nicht.

Wenn Sie mehrere Felder zum Aktualisieren haben, können Sie am Ende einfach weitere Werte zu diesem Array hinzufügen.

+0

Ich denke du hast die Frage nicht verstanden. Er möchte E-Mail in Eloquent liefern find() -Methode und will, dass es gegen emil Spalte –

+0

Ich bearbeitete meinen Kommentar –

+0

Warum würden Sie den Query Builder für diese verwenden, wenn op eine beredte Modell-Setup hat? Das Problem ist nicht, dass dies nicht einfach in Eloquent getan werden kann, aber die Tatsache, dass es keine Nullprüfung vor dem Versuch gibt, Eigenschaften für das Objekt festzulegen (siehe meine Antwort) – Wader

0

Versuchen Sie es so.

User::where('email', $userEmail)->update({'member_type' => $plan});