LaravelのEloquent/Fluentで全ての行に同じ値を設定する方法とは?
2023-07-14 08:28:24
質問
データベースのすべての行を更新する必要があります。 すべて の特定のフィールドが一つの値に等しくなるように、データベースのすべての行を更新する必要があります。以下はその例です。
私のデータベースのテーブルがこのようなものだとします。
id | データ | 確定 |
---|---|---|
1 | いくつかのデータ | 0 |
2 | いくつかのデータ | 1 |
3 | いくつかのデータ | 0 |
すべての行の確認済みフィールドを1にするクエリを実行したい。
このようにすればいいのですが
$rows = MyModel::where('confirmed', '=', '0')->get();
foreach($rows as $row) {
$row->confirmed = 0;
$row->save();
}
しかし、もっと良い方法があるように思えます。単一のクエリで、「すべての行の 'confirmed' フィールドを 1 に設定する」と言うだけです。
LaravelのEloquent/Fluentにそのようなクエリは存在しますか?
どのように解決するのですか?
まあ、簡単な答えですが、eloquentでは無理です。モデルはデータベースの1行を表すので、これを実装しても意味がないのです。
しかし、fluentでこれを実現する方法があります。
$affected = DB::table('table')->update(array('confirmed' => 1));
あるいはさらに良い
$affected = DB::table('table')->where('confirmed', '=', 0)->update(array('confirmed' => 1));
関連
-
[解決済み】Laravel - EloquentまたはFluentランダム行
-
[解決済み】Eloquentで「if not null」を確認する方法は?
-
[解決済み] eloquent/fluentを使用して、1つのクエリから複数行を挿入する方法
-
[解決済み] Laravel. リレーションを持つモデルでscope()を使用する
-
[解決済み] Laravelで「キャッシュのクリアに失敗しました。適切なパーミッションがあることを確認してください"
-
[解決済み] Laravelで非キーカラムのフィールドに明確な値を取得する方法は?
-
[解決済み] Laravel Eloquent - 1つの行を取得する
-
[解決済み] Laravel Fluent Query Builder サブクエリによる結合
-
[解決済み] ファースト・オア・クリエイト
-
[解決済み] laravel with() メソッドと load() メソッドの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] パブリックディレクトリを取得するには?
-
[解決済み] 2つのCarbon Timestampを比較するには?
-
[解決済み] Laravel Eloquent - 1つの行を取得する
-
[解決済み] LaravelではbelongsToとhasOneのどちらを使うべきですか?
-
[解決済み] Laravel 多対多のリレーションシップの保存/更新
-
[解決済み] laravel Unable to prepare route ... for serialization. クロージャを使う
-
[解決済み] Laravel Queue システムをサーバー上で動作させる方法
-
[解決済み] UnixタイムスタンプをCarbonオブジェクトに変換する
-
[解決済み] Laravel Fluent Query Builder サブクエリによる結合
-
[解決済み] ピボットテーブルのデータ添付でタイムスタンプが更新されない