前提・実現したいこと
Laravelのクエリビルダを使って、複数のテーブルを結合(union)した後に、
まとめて一つのカラムの値で重複削除(groupby)をしたいと考えています。
調べてみましたが上手くいかず、ご存知の方がいらっしゃればご教授願いたいです。
該当のソースコード
php
1//migrationsでのhoge,huga,piyoテーブルの定義 2public function up() 3{ 4 Schema::connection('mysql') 5 ->create(self::$TABLE_NAME, function (Blueprint $table) { 6 $table->bigIncrements('id'); 7 $table->string('name', 255)->comment('名前')->nullable()->default(null); 8 $table->string('memo', 255)->comment('メモ')->nullable()->default(null); 9 $table->foreign('master_id')->references('id')->on('media_master')->onDelete('cascade'); 10 $table->timestamps(); 11 $table->softDeletes(); 12 }); 13}
php
1//servicesでのクエリビルダ記述 2//$hoge,$piyo,$hugaにはそれぞれのテーブルに対して同じmaster_idで絞り込むSelect文を記載 3$items = $hoge->union($huga)->union($piyo)->groupBy('name')->get();
発生している問題・エラーメッセージ
上記で実装する時、$itemsを参照するとSQL文では$hogeの部分にしかgroupByが掛かりません。
補足情報(FW/ツールのバージョンなど)
PHP: 7.3
Laravel: 5.8
MySQL: 5.6
初歩的な部分かと思いますが、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー