内容へ移動
ゆーものメモ帳
ユーザ用ツール
管理
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
プログラム言語:php:laravel:union_all
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 【Laravel】union all で2つのテーブルのデータを結合 ====== union all で2つのテーブルを結合する例。\\ union all は重複したデータも取得、重複したデータは1つだけ取得したい場合は union を使用する。 <code:php> $builder_01 = Eloquent_01::select( DB::raw('"01" as type'), 'id', 'name', 'status', DB::raw('null as status_02'), 'created_at' ); $builder_02 = Eloquent_02::select( DB::raw('"02" as type'), 'id', 'name', 'status', 'status_02', 'created_at' ) ->with('db_table_name'); $user_unions = $builder_02 ->unionAll($builder_01) ->orderBy('created_at', 'desc') ->paginate(20); </code> ==== 以下ざっくり解説 ==== === select === union 時に、両方のテーブルから取得するするカラムを合わせる必要がある。そのため、select 区で同じカラムを抽出するように調整する。 DB::raw('"01" as type') のように書くことで、テーブルを判別するカラムを追加したりできる。 片方のテーブルにしかないカラムを取得したい場合は、もう片方のテーブルで DB::raw('null as status_02') のようにカラムを追加してやればよい。 === with === with で合わせて取得したいテーブルがあった場合、片方のテーブルでしかリレーションしてなくてもOK。 もちろん使うときは、存在する方でのみ呼び出すような制御は必要。
プログラム言語/php/laravel/union_all.txt
· 最終更新: 2022/07/21 18:36 by
humolife
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ