質問するログイン新規登録
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

0回答

79閲覧

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

spweek2022

総合スコア2

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2023/05/01 08:46

0

0

実現したいこと

・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/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問