我在项目和调查之间有多对多的关系。我可以使用
成功地在调查和项目之间建立关系 $userSurvey = $project->surveys()->save($survey);
。
这将在question_survey
数据透视表中创建一条新记录(数据透视表包含id
,question_id
和survey_id
列。)
$userSurvey
将收到新创建的调查模型。有没有办法在id
数据透视表中接收新记录的question_survey
?
答案 0 :(得分:1)
检索多对多关系时,Laravel会自动将 pivot 附加到生成的模型,因此在您的情况下,{{1会自动拥有一个名为$userSurvey
的属性,当然也就是枢轴。
但默认情况下,pivot
属性仅包含 外键 ,因此在您的情况下,pivot
和{{1} }。如果您有任何其他额外属性(在您的情况下为question_id
),只需使用survey_id
方法,如下所示。
id
现在您可以从数据透视表中访问withPivot
:
public function surveys()
{
return $this->belongsToMany('App\Question', 'question_survey')
->withPivot('id');
}
奖励,如果您认为id
字词不符合您的措辞风格,只需使用您关系中的$userSurvey->pivot->id;
方法来自定义变量名称 枢轴属性。
pivot
现在您可以从数据透视表中访问as
:
public function surveys()
{
return $this->belongsToMany('App\Question', 'question_survey')
->as('question_survey')
->withPivot('id');
}