Laravelの多対多のリレーションでテーブル名を規則から外す時

多対多のリレーションを設計するときに、ドキュメント通りやっていたと思ったらちょっとした勘違いをした話です。

ここに3つのテーブルがあるじゃろ?

今回のテーブル

  • events
  • event_tags
  • event_tag_event←pivotテーブル

通常のテーブルは

  • events
  • tags
  • tag_event

って感じでデフォルトの規則通りリレーションを貼ればいいのですが、ちょっと癖のある名前にすると少し気をつけるところがあるようです。

ドキュメントを見てみる

Laravel 5.1 Eloquent:リレーション

ほうほう第2引数をもたせてあげればいいんだなー

tinkerを立ち上げて確認すると・・

  怒られます。ヽ(´ー`)ノ

第2引数はPivotテーブル名!

もしかしてPivotテーブル名を指定するのでは・・?

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias on relationship

怒られませんでした。ヽ(´ー`)ノ

所感

最近はバッグエンドよりもフロントエンドが気になって夜も寝れませんヽ(´ー`)ノ