Laravel-Update-Abfrage

Lesezeit: 3 Minuten

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

Benutzeravatar von msturdy
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!

    – mrobust

    3. Dezember 2014 um 11:33 Uhr

Benutzeravatar von Cengkuru Michael
Cengkuru Michael

Versuchen Sie es so.

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

  • Benutzer::where(’email’, $userEmail)->update([‘member_type’ => $plan]);

    – Pasindu Jayanath

    31. Oktober 2018 um 14:45 Uhr

  • 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

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

Benutzeravatar von nandu
nandu

$update = \DB::table('student') ->where('id', $data['id']) ->limit(1) ->update( [ 'name' => $data['name'], 'address' => $data['address'], 'email' => $data['email'], 'contactno' => $data['contactno'] ]); 

Benutzeravatar von rashedcs
rashedcs

Es ist sehr einfach zu tun. Code sind unten angegeben:

 DB::table('user')->where('email', $userEmail)->update(array('member_type' => $plan));  

1440010cookie-checkLaravel-Update-Abfrage

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy