このページの2つのバージョン間の差分を表示します。
— |
プログラム言語:php:laravel:union_all [2022/07/21 18:36] (現在) humolife 作成 |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 【Laravel】union all で2つのテーブルのデータを結合 ====== | ||
+ | union all で2つのテーブルを結合する例。\\ | ||
+ | union all は重複したデータも取得、重複したデータは1つだけ取得したい場合は union を使用する。 | ||
+ | < | ||
+ | $builder_01 = Eloquent_01:: | ||
+ | DB:: | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | DB:: | ||
+ | ' | ||
+ | ); | ||
+ | $builder_02 = Eloquent_02:: | ||
+ | DB:: | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ) | ||
+ | -> | ||
+ | |||
+ | $user_unions = $builder_02 | ||
+ | -> | ||
+ | -> | ||
+ | -> | ||
+ | </ | ||
+ | ==== 以下ざっくり解説 ==== | ||
+ | === select === | ||
+ | union 時に、両方のテーブルから取得するするカラムを合わせる必要がある。そのため、select 区で同じカラムを抽出するように調整する。 | ||
+ | |||
+ | DB:: | ||
+ | |||
+ | 片方のテーブルにしかないカラムを取得したい場合は、もう片方のテーブルで DB:: | ||
+ | |||
+ | === with === | ||
+ | with で合わせて取得したいテーブルがあった場合、片方のテーブルでしかリレーションしてなくてもOK。 | ||
+ | もちろん使うときは、存在する方でのみ呼び出すような制御は必要。 |