$this->belongsToMany(Post::class);}のとき、User::posts()->get();のようにリレーションを呼ぶとposts.idがpost_user.idで上書きされてしまう事象が起きる。withPivot()などで取得カラムを指定しても発生。joinを内部的に行なっているため。...であり、joinの際に同一名のカラムはMySQL側で上書きされるため。Laravelライクな対応JOINをさせなければ良いので、Eloquentの通常的なリレーションを呼べば発生しないはず。N+1個のクエリが発行されてしまう。本記事は対応2を実施した備忘録なので、今回は未検証です。belongsToManyっぽいメソッドを作るこれを避けるために、なんとかデフォルトのbelongsToManyっぽくふるまう関数を作成することで対応した。withPivotを使ったときと同じ値の入り方をしてくれる。返り値はBuilderなので、他のscopeなどとチェーンできる。クエリの発行数が抑えられる(はず。なんか最近N+1問題が解消しつつあるみたいな情報を見た気もするので違ったら教えてください。)デメリットこれ自体がスコープ関数ではないので最初に使わなければならない。scopeにするならPost.php側に作って、User側からはそれを呼ぶだけになるが、どちらにせよ依存の謎矢印問題が起きるし、変なstatic関数がPost側にできる方が気持ち悪いので今回はUser側においた。Builderを作成する関数がUser側にできてしまいやや密結合的。これで乗り切ろうと思います。何かいい方法があれば教えてください。Nuxt)でクラシカルなウェブアプリケーション開発を行なっています。Nuxt)でクラシカルなウェブアプリケーション開発を行なっています。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。