Ich versuche, einen Benutzer auf der Grundlage der nicht vorhandenen E-Mail-ID zu aktualisieren. Gibt es eine Möglichkeit, dies ohne Rohabfragen zu tun?
Aktuell der Fehler
{“error”:{“type”:”ErrorException”,”message”:”Erzeuge Standardobjekt aus leerem Wert”,”file”:”C:\wamp\www\celeb-jim\app\controllers\SignupController.php “,”line”:189}}
Mein Code
public function changeAccountStatus ($plan, $userEmail ){
$UpdateDetails = User::where('email', '=', $userEmail)->first();
$UpdateDetails->member_type = $plan;
$UpdateDetails->save();
}
Und was steht an 189?
– Jarek Tkaczyk
2. Dezember 2014 um 12:05 Uhr
mrobust
Du könntest die verwenden Laravel-Abfragegeneratorsondern dies ist nicht der beste Weg, es zu tun.
Überprüfen Sie die Antwort von Wader unten auf den eloquenten Weg – was besser ist, da Sie damit überprüfen können, ob es tatsächlich einen Benutzer gibt, der mit der E-Mail-Adresse übereinstimmt, und den Fehler behandeln, wenn dies nicht der Fall ist.
DB::table('users')
->where('email', $userEmail) // find your user by their email
->limit(1) // optional - to ensure only one record is updated.
->update(array('member_type' => $plan)); // update the record in the DB.
Wenn Sie mehrere Felder aktualisieren müssen, können Sie diesem Array am Ende einfach weitere Werte hinzufügen.
Ich glaube du hast die Frage nicht verstanden. Er möchte eine E-Mail in der Eloquent find()-Methode bereitstellen und möchte, dass sie mit der emil-Spalte übereinstimmt
– Khan Shahrukh
2. Dezember 2014 um 12:01 Uhr
Warum sollten Sie den Query Builder dafür verwenden, wenn op ein Eloquent-Modell-Setup hat? Das Problem ist nicht, dass dies in Eloquent nicht einfach möglich ist, sondern die Tatsache, dass es keine Nullprüfung gibt, bevor versucht wird, Eigenschaften für das Objekt festzulegen (siehe meine Antwort).
– Wathose
2. Dezember 2014 um 13:22 Uhr
@Wader ja, du hast recht. Ich würde dies löschen, wenn es nicht akzeptiert würde. Das +1 auf Ihrem ist von mir. Ich werde dies aktualisieren, um es klarer zu machen
– mrobust
2. Dezember 2014 um 18:33 Uhr
Ich habe nicht gesagt, dass dies falsch ist, sondern nur die Vorteile der Verwendung des Query Builder gegenüber Eloquent in Frage gestellt. Mir ist klar, dass mein Kommentar ziemlich hart klingt, Entschuldigung
– Wathose
3. Dezember 2014 um 9:02 Uhr
@Wader kein Problem, du hattest Recht, es in Frage zu stellen. Deine Antwort ist die bessere!
Das ist die beste Lösung, da dieser Code nur eine SQL-Abfrage anstelle von anderen ausführt
– Simon Russin
3. Juni 2022 um 5:09 Uhr
Darauf deutet dieser Fehler hin User::where('email', '=', $userEmail)->first() null zurückgibt, und kein Problem beim Aktualisieren Ihres Modells.
Überprüfen Sie, ob Sie tatsächlich einen Benutzer haben, bevor Sie versuchen, dessen 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 muss nicht überprüft werden, ob der Benutzer null ist, da dies eine Ausnahme auslöst (ModelNotFoundException), wenn ein Modell nicht gefunden wird, das Sie verwenden können App::error()http://laravel.com/docs/4.2/errors#handling-errors
Und was steht an
189
?– Jarek Tkaczyk
2. Dezember 2014 um 12:05 Uhr