Laravel belongsToManyで生成されるSQLを変えたい

実現したいこと

・belongsToManyで生成されるSQLがとても長い文字列になってしまうため、変更したい

前提

Laravle5.8、EloquentのWebシステムです。

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

aaas.idのカンマ区切りリストが大量になり、SQL文の文字数が長くなってしまいます。
本来であればin句ではなくjoinで結合したいのですが、うまくいきません。

SQL文

select `cccs`.*, `bbbs`.`aaa_id` as `pivot_aaa_id`, `bbbs`.`ccc_id` as `pivot_ccc_id` from `cccs` inner join `bbbs` on `ccc`.`id` = `bbb`.`ccc_id` where `bbbs`.`bbb_id` in (aaas.idのカンマ区切りリスト)

該当のソースコード

return $this->belongsToMany(\App\Models\ccc::class, 'bbb', 'aaa_id', 'ccc_id') ->select( 'bbb.*' );

試したこと

以下のように修正してみましたが、エラーになります。

return $this->select(
'bbbs.*'
)
->join('bbbs', 'serialresults.aaa_id', '=', 'aaas.id')
->join('cccs', 'cccs.id', '=', 'bbbs.ccc_id')

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

コメントを投稿

0 コメント