2016-08-19 20 views
0

私の目標です。 私は3つのLaravelモデルを持っています:ユーザー,キャンペーンcampaign_playersです。私はユーザーと、彼/彼女がプレイしているキャンペーンについての情報を得たいと思っています。Laravelピボットテーブルが見つかりません

問題です。 私はこのクエリを実行すると:

「ベース・テーブルまたは見つからないビュー:存在しません。1146表 'sagohamnen.campaign_playersを'(SQL、それは私にこのメッセージを表示します

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

を:インナーsh_campaignsからpivot_idとしてidsh_campaigns。*、campaign_playersuser_idcampaign_playerspivot_user_idとしてを選択 に参加はsh_campaignsです。 id = campaign_playersid campaign_players。それはいくつかの理由で、テーブル名を見つけることができないように見えます(2))」

user_id。君たちが問題の原因とどのようにそれを修正するにはどう任意のアイデアを持っていますか?

ここ私のモデルとit'sデータベーステーブルからの短いコード片がある。

ユーザー

protected $table = 'sh_users'; 
public function campaigns_playing() 
{ 
     return $this->belongsToMany('Sagohamnen\campaign\campaign', 'Sagohamnen\campaign\campaign_players', 'user_id', 'id'); 
} 

Schema::create('sh_users', function (Blueprint $table) { 
     $table->increments('id')->unsigned(); 
     $table->string('name', 255); 
}); 

キャンペーン

protected $table = 'sh_campaigns'; 

Schema::create('sh_campaigns', function (Blueprint $table) { 
     $table->increments('id')->unsigned(); 
     $table->string('name', 255);    
     $table->timestamps(); 
}); 

Campaign_players

protected $table = 'sh_campaign_players'; 

Schema::create('sh_campaign_players', function (Blueprint $table) { 
     $table->integer('user_id')->unsigned(); 
     $table->integer('campaign_id')->unsigned(); 
     $table->date('date'); 
     $table->primary(['user_id', 'campaign_id']); 
}); 
+0

それが見えます。最初のエラーは 'campaign_players'テーブルが存在しないことです。あなたが掲示したコードから、あなたは 'sh_campaign_players'テーブルの名前をつけたようです。 – tam5

+0

コメントありがとうございます。ええ、私はcampaign_playersというモデルの名前を書いていました。モデルの代わりにMySqlテーブル名を書く必要がありますか? – Olof84

+0

@Rufflesはテーブルの名前を渡す方法について正しいと言いました。さらに、Laravel [docs](https://laravel.com/docs/5.2/eloquent-relationships)を読むことをお勧めします。奨励されている特定の規則があります。この場合、ピボットテーブル 'campaign_user'を呼び出すなどです。 – tam5

答えて

1

はbelongsToMany()メソッドの2番目のパラメータとして、ピボットテーブル名を渡します。モデルクラスパスではなく文字列を要求します。ここで間違っていくつかのことがあるかもしれないよう

変更Sagohamnen\campaign\campaign_playerssh_campaign_playersは(またはあなたのピボットテーブルの名前はデータベース内にあるものは何でも)

関連する問題