Laravel サブクエリ データを外部結合させたい 3つのデータを結合

前提

簡単なシステムを作成しています。Larabelでテーブルの結合をさせたいのですが、上手くできずにいます。

実現したいこと

イメージ説明
3つのテーブルを結合させたいです。
実現したいテーブル

会社テーブル

ID 名前 日付
1 〇〇会社 2025/2/8
2 ××会社 2022/12/08
3 △△会社 2024/11/30

画像テーブル

ID 画像 会社ID
1 aaa.png 1
2 bbb.png 2
3 ccc.png 3

金額テーブル

ID 金額 会社ID
1 250 1
2 580 2
3 20 3
1 18 1
2 22 2
3 62 3

発生している問題・エラーメッセージ

Method Illuminate\Database\Eloquent\Collection::toSql does not exist.

該当のソースコード

//1.会社テーブルと画像テーブルの結合 $subquery1 = Company::select(DB::raw( ' Company.id as id , Company.name as name , Company as date , Image.img_path as image ' )) ->join('Image', 'Image.company_id', '=', 'Company.id') ->get(); //2.経費のグループ化して、金額の取得 $subquery2 = Cost::select('company_id', DB::raw('MAX(price)'), DB::raw('MIN(price)'))) ->groupby('company_id')->get(); //1.と2.のテーブルを外部結合させる $query = DB::table(DB::raw("({$subquery1->toSql()}) as s1")) ->leftjoin(DB::raw("({$subquery2->toSql()}) as s2"), function ($join) { $join->on('s1.id', '=', 's2.company_id'); }) ->mergeBindings($subquery1) ->mergeBindings($subquery2); $new_opens = $query->get();

試したこと

データをデバックでとってみたところ、$subquery1 と$subquery2については
データは取れてました。

補足情報(FW/ツールのバージョンなど)

このページを参考にしました。
https://www.unagino-nedoko.com/laravel/subquery-whereかきました

コメントを投稿

0 コメント