我在ManyToMany
和Election
之间建立了Party
关系,以将政党与多个选举联系起来。
public function parties(): BelongsToMany
{
return $this
->belongsToMany(Party::class)
->using(ElectionParty::class)
->withPivot('has_no_answers', 'published', 'program_pdf', 'program', 'id');
}
在数据透视表election_party
上,我添加了一个自动递增的id
。
各方可以为每次选举提供答案,因此,我在数据透视表上创建了hasMany
与Answer
的{{1}}关系
electionparty_id
现在,要获得答案,或者在这种情况下,这很重要,我可以在Blade中执行以下操作:
class ElectionParty extends Pivot
{
public function answers(): HasMany
{
return $this->hasMany(Answer::class);
}
}
但是,这是行不通的,因为它不会尝试通过数据透视表ID(我认为应该是选举ID)来获得答案:
SQLSTATE [42703]:未定义的列:7错误:列answer.election_id不存在线1:从“答案”中选择*,其中“答案”。“ election_id” = $ 1 a ... ^提示:也许您的意思是引用“ answers.question_id”列。 (SQL:从“答案”中选择*,其中“答案”。“ election_id” = 16并且“答案”。“ election_id”不为空)
我在这里错过了什么吗?还是没有做应该做的事情?
答案 0 :(得分:0)
在枢轴模型中,默认键的生成方式有所不同。指定外键:
class ElectionParty extends Pivot
{
public function answers(): HasMany
{
return $this->hasMany(Answer::class, 'electionparty_id');
}
}