私はチャンネルとビデオテーブルの間にOne to Many relationship
を持っています。どちらの表にもvisibility
フィールドがあります。チャンネルの可視性を更新するとき、そのチャンネルに属するすべての動画の可視性をチャンネルの可視性値で更新したいと考えています。Lassvelでhas-many関係のテーブルを一括更新
Laravel 5.4でこの一括更新機能を実現するにはどうすればよいですか?
私はチャンネルとビデオテーブルの間にOne to Many relationship
を持っています。どちらの表にもvisibility
フィールドがあります。チャンネルの可視性を更新するとき、そのチャンネルに属するすべての動画の可視性をチャンネルの可視性値で更新したいと考えています。Lassvelでhas-many関係のテーブルを一括更新
Laravel 5.4でこの一括更新機能を実現するにはどうすればよいですか?
を更新する必要があります。 「可視性」フィールドが変更されている場合はチェックし、関連するすべてのレコードを一度に更新するクエリを実行します。
$channel->videos()->update(['visibility' => true]);
1つの可能性。これは、実際にそれらを取得していないので、それらのVideo
モデルのイベントを発生させず、DB上で直接更新を起動します。
手動でそれを行うあなたはそのモデルの「更新」のイベントをリッスンでき、すべてのレコード
$videos = App\Channel::find(1)->videos;
foreach ($videos as $video) {
$video->visible = false // or true whatever happened on Channel
$video->save()
}
はこれを試み、それが魅力のように働いた
$channel->videos()->update([
'visibility' => $channel->visibility,
]);