私の目標。user、Campaign、Campaign_players の 3 つの Laravel モデルがあります。ユーザーに関する情報と、そのユーザーがプレイしているキャンペーンに関する情報を取得したいと考えています。
問題。 このクエリを実行すると:
$campaigns = user::with(['campaigns_playing'])->where('id', $id)->get();
次のメッセージが表示されます。
「ベース テーブルまたはビューが見つかりません: 1146 テーブル 'sagohamnen.campaign_players' が存在しません (SQL: select
sh_campaigns
.*,campaign_players
.user_id
aspivot_user_id
,campaign_players
.id
aspivot_id
fromsh_campaigns
inner joincampaign_players
onsh_campaigns
.id
=campaign_players
.id
wherecampaign_players
.user_id
in (2))」
何らかの理由でテーブル名が見つからないようです。問題の原因とそれを修正する方法について何か考えがありますか?
これは、私のモデルとそのデータベース テーブルの短いコードです。
ユーザー
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']);
});