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

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

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

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

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

今回のテーブル

通常のテーブルは

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

ドキュメントを見てみる

Laravel 5.1 Eloquent:リレーション

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

public function eventTags()
{
  // 第2引数はPivotテーブル!
  return $this->belongstoMany('App\Modles\EventTag', 'event_tag_event)->withTimestamps();
}

public function events()
{
  return $this->belongsToMany('App\Models\Events');
}

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

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

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

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

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

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

public function eventTags()
{
  // 第二引数はPivotテーブル!
  return $this->belongstoMany('App\Modles\EventTag', 'event_tag_event)->withTimestamps();
}

public function events()
{
  return $this->belongsToMany('App\Models\Events');
}

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

所感

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

Tags: Laravel
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事