2017-12-05 13 views
0

テーブルのすべての行をEloquentモデルの新しい値に更新したいとします。 Laravelのドキュメントは、Eloquentを使用した大量更新の例を示しています。Where条件なしでEloquentモデルを一括更新するにはどうすればよいですか?

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

ただし、where条件は必要ありません。 where句を省略

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

:理想的には、私はこのような何かを実行することができると思います。しかし、これはエラーを与える:

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

にはどうすれば質量雄弁を使用して、私のテーブル内のすべての行を更新することができますか?可能であれば、DB::table('flights')->update(...)スタイルの使用を避けたいです。

答えて

0

これはquery()メソッドは新しいクエリビルダインスタンスを作成しますが、(where条件のような)任意の初期句なし

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

を実行して使用して行うことができます。その後、update()のような追加の操作をチェーンすることができます。

+0

':: all()'を使わないのはなぜですか? –

+0

':: all()'は実際にデータベースからインスタンスを取得します。 –

関連する問題