前提
使用しているテーブルは以下のような3テーブルで
・masterA sub_cd sub_name ・masterB sub_cd a_cd b_cd ・tableA a_cd b_cd hogeA hogeB
phpでクエリビルダーを使用している以下のような記述を
$this->builder ->select('masterA.sub_cd', 'masterA.sub_name') ->selectRaw('count(*)'); $this->builder->leftjoin('masterB', function ($join) { $join->on('masterB.sub_cd', '=', 'masterA.sub_cd'); }); $this->builder->leftjoin('tableA', function ($join) { $join->on('masterB.a_cd', '=', 'tableA.a_cd'); $join->on('masterB.b_cd', '=', 'tableA.b_cd'); }); $this->builder ->groupBy('masterA.sub_cd', 'masterA.sub_name') ->orderBy('masterA.sub_cd');
Eloquentリレーションを活用し、主テーブルをmasterAとしたmasterAModelクラス内で
以下のような記述を利用し、実装するにはどのようにしたら良いのでしょうか?
$this->hasMany('masterB','sub_cd','sub_cd')
実現したいこと
試したこと
以下のようにmasterAとmasterBをリレーションを用いた記述で記載するところまではできています。
masterBとtableAをどのようにしたら紐づけることができるのでしょうか?
// public function getJoinData() // { // return $this->hasMany('masterB','sub_cd','sub_cd') // ->select('masterA.sub_cd', 'masterA.sub_name') // ->selectRaw('count(*)') // ->groupBy('masterA.sub_cd', 'masterA.sub_name') // ->orderBy('masterA.sub_cd'); // }
0 コメント