私の目標です。 私は3つのLaravelモデルを持っています:ユーザー,キャンペーンとcampaign_playersです。私はユーザーと、彼/彼女がプレイしているキャンペーンについての情報を得たいと思っています。Laravelピボットテーブルが見つかりません
問題です。 私はこのクエリを実行すると:
「ベース・テーブルまたは見つからないビュー:存在しません。1146表 'sagohamnen.campaign_playersを'(SQL、それは私にこのメッセージを表示します
$campaigns = user::with(['campaigns_playing'])->where('id', $id)->get();
を:インナー
sh_campaigns
からpivot_id
としてid
。sh_campaigns
。*、campaign_players
。user_id
campaign_players
、pivot_user_id
としてを選択 に参加はsh_campaigns
です。id
=campaign_players
。id
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']);
});
それが見えます。最初のエラーは 'campaign_players'テーブルが存在しないことです。あなたが掲示したコードから、あなたは 'sh_campaign_players'テーブルの名前をつけたようです。 – tam5
コメントありがとうございます。ええ、私はcampaign_playersというモデルの名前を書いていました。モデルの代わりにMySqlテーブル名を書く必要がありますか? – Olof84
@Rufflesはテーブルの名前を渡す方法について正しいと言いました。さらに、Laravel [docs](https://laravel.com/docs/5.2/eloquent-relationships)を読むことをお勧めします。奨励されている特定の規則があります。この場合、ピボットテーブル 'campaign_user'を呼び出すなどです。 – tam5