2016-08-31 9 views
1

Laravelがピボットテーブルを単数形として質問するのはなぜですか?それを複数形と呼ぶように修正するには?Laravelピボットテーブルが複数でない

データベーステーブル

  • ユーザー(IDなど)
  • キャンペーン(IDなど)
  • campaign_users(user_idは、CAMPAIGN_ID)

コード

キャンペーンmodel、およびcampaign_userモデルはかなり空で、職人によって生成されます。しかし、ここでは、Userモデルでキャンペーンに私のユーザ関係、以下のとおりです。

ここ
public function playing_campaigns() 
    { 
     return $this->belongsToMany('Sagohamnen\campaign\campaign'); 
    } 

私は、ユーザーがの一部である、キャンペーンを取得するためにDBを呼び出します。

$user = user::with(['playing_campaigns'])->where('id', $id)->get(); 

SQLエラー

SQLSTATE [42S02]:基本テーブルまたはビューが見つかりません:1146テーブル 'sagohamnen.campaign_user'が存在しません(SQL:select campaigns。*、 campaign_useruser_idpivot_user_id, campaign_userとする。 campaign_idpivot_campaign_idからcampaigns を内側結合campaign_usercampaignsに設定します。 id = campaign_usercampaign_idここで、campaign_user。 (1))

答えて

1

belongsToManyuser_idこれはLaravelは試してみて、私たちの生活を容易にするために前提としてちょうど規格である

return $this->belongsToMany('Sagohamnen\campaign\campaign', 'campaign_users'); 

...テーブル名の二番目のパラメータを取ります。

+0

[多対多のドキュメント](https://laravel.com/docs/5.2/eloquent-relationships#many-to-many) – Carlos

+0

お返事ありがとうございました。ドキュメントの権利を理解している場合は、テーブルの名前がLaravelの規則に従っている場合は、2番目の引数を追加する必要はありません。 「Eloquentは2つの関連するモデル名をアルファベット順に結合する」私は2番目の議論を加えて、変化が起きたかどうかを調べました。結果は空の配列、hmでした。 – Olof84

+0

あなたのテーブルは 'campaign_user'なのでアルファベット順です。空の配列が返される場合は、使用しているユーザーIDにデータが挿入されていることを確認してください。また、DB上の一般的なログをオンにし、実行されているクエリーを見て、意味をなさないことを確認するのに役立ちます。 – user3158900

関連する問題