2017-12-05 6 views
0

Ich möchte alle Zeilen in einer Tabelle mit einem neuen Wert für ein Eloquent-Modell aktualisieren. Die Dokumentation von Laravel gibt das folgende Beispiel für Massenaktualisierungen mit Eloquent:Wie aktualisiere ich ein Eloquent-Modell ohne eine Where-Bedingung?

App\Flight::where('active', 1) 
      ->where('destination', 'San Diego') 
      ->update(['delayed' => 1]); 

Aber ich brauche die WHERE-Bedingung nicht. Im Idealfall würde ich in der Lage sein, so etwas laufen:

App\Flight::update(['delayed' => 1]); 

die die where Klausel verzichtet. Aber das gibt den Fehler:

PHP Deprecated: Non-static method Illuminate\Database\Eloquent\Model::update() should not be called statically on line 1 

Wie kann ich alle Masse aktualisieren die Zeilen in meinem Tisch mit Eloquent? Ich möchte vermeiden, die DB::table('flights')->update(...) Art zu verwenden, wenn möglich.

Antwort

0

Dies kann durch Ausführen

App\Flight::query()->update(['delayed' => 1]); 

Die query() Methode erstellt eine neue Query Builder-Instanz, aber ohne anfängliche Klauseln (wie where Bedingungen) unter Verwendung erfolgen. Zusätzliche Operationen wie update() können danach angekettet werden.

+0

Warum nicht ':: all()'? –

+0

':: all()' ruft die Instanzen tatsächlich aus der Datenbank ab. –

Verwandte Themen