Verwenden Sie andere Spaltenwerte für das Eloquent-Update

Lesezeit: 2 Minuten

Benutzeravatar von lesssugar
weniger Zucker

Ich möchte eine durchführen UPDATE mit Eloquent wird sich das einstellen column_c Wert mit Werten von column_a Und column_b des gleichen Tisches. Im Grunde so etwas:

User::where('id', '>', 0)
        ->update(['column_c' => $this->column_a + $this->column_b]);

Wo $this->column_a Und $this->column_b wäre die tatsächlichen Werte aus der aktuellen Zeile.

MySQL-Äquivalent:

UPDATE `user` WHERE id > 0 SET column_c = column_a + column_b;

Notiz: Der obige Code ist nur ein Beispiel, um die Idee zu zeigen. Es ist nicht die eigentliche Implementierung (die eine DB-Redundanz schaffen würde).

Wie führe ich ein solches Update in Laravel 5.1 durch? Ich möchte wirklich vermeiden, a foreach.

Vielleicht DB::raw kann helfen. Auf diese Weise können Sie jede standardmäßige SQL-Abfrage verwenden, um Ihre Daten zu kombinieren:

User::where('id', '>', 1)
    ->update(['column_c' => DB::raw( CONCAT(column_a, '-', column_b) )]);

  • Natürlich weiß ich das DB::raw(), es ist praktisch, aber ich finde es eine “Umgehung” für erweiterte Abfragen, die mit Eloquent oder Query Builder schwer zu erstellen sind. Es ist ziemlich enttäuschend, dass etwas, das in MySQL so einfach zu erledigen ist (wie in meinem Beitrag), in Laravel nicht sofort verfügbar ist. Trotzdem danke 🙂

    – weniger Zucker

    29. Juni 2015 um 14:51 Uhr

  • Aber ich schätze bei Eloquent only gibt es nur den Weg über die Datenabfrage. Wie du gesagt hast DB::raw() ist etwas für fortgeschrittene Abfragen und ich würde dies bereits als fortgeschritten bezeichnen, da es keine Funktionen wie gibt concat im Laravel.

    – Pᴇʜ

    29. Juni 2015 um 15:00 Uhr

  • Ja, wahrscheinlich hast du recht. Ich werde es am Ende machen, denke ich.

    – weniger Zucker

    29. Juni 2015 um 15:01 Uhr

Beispiel:

User::where('id', '>', 0)
    ->update(['column_c' => DB::raw('`column_a` + `column_b`']);

  • Etwas mehr Erklärung und nicht nur der Code selbst wäre schön gewesen. 😉

    – Alexander Dobernig

    24. Januar 2021 um 9:25 Uhr

  • Ich sehe keinen großen Unterschied zur akzeptierten Antwort, Sie haben die ID von 1 auf 0 geändert und concat durch + ersetzt, aber das scheint es für mich nicht zu einer anderen Lösung zu machen.

    – Regel

    24. Januar 2021 um 10:10 Uhr

1444640cookie-checkVerwenden Sie andere Spaltenwerte für das Eloquent-Update

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

Privacy policy