存储多对多关系时从数据透视表 table 取回数据
Get back data from the pivot table when store a many-to-many relationship
我在项目和调查之间建立了多对多关系。我可以使用
成功地在调查和项目之间建立关系
$userSurvey = $project->surveys()->save($survey);
。
这将在 question_survey
数据透视表 table 中创建一条新记录(数据透视表 table 包含列 id
、question_id
和 survey_id
.)
$userSurvey
将收到新创建的调查模型。有什么方法可以在 question_survey
枢轴 table 中接收新记录的 id
?
检索多对多关系时,Laravel会自动将枢轴附加到结果模型 ,因此在您的情况下,$userSurvey
将自动具有一个名为 pivot
的属性,当然,它包含枢轴。
但默认情况下,pivot
属性仅包含 外键 ,因此在您的情况下,question_id
和 survey_id
。如果你有任何其他额外的属性,(在你的情况下 id
),只需使用 withPivot
方法,如下所示。
public function surveys()
{
return $this->belongsToMany('App\Question', 'question_survey')
->withPivot('id');
}
现在您可以从枢轴 table:
访问 id
$userSurvey->pivot->id;
bonus,如果你觉得pivot
这个词刚好不符合你的措辞风格,只需在你的关系中使用as
方法来自定义变量名[= 枢轴属性的 43=]。
public function surveys()
{
return $this->belongsToMany('App\Question', 'question_survey')
->as('question_survey')
->withPivot('id');
}
现在您可以从枢轴 table:
访问 id
$userSurvey->question_survey->id;
我在项目和调查之间建立了多对多关系。我可以使用
成功地在调查和项目之间建立关系$userSurvey = $project->surveys()->save($survey);
。
这将在 question_survey
数据透视表 table 中创建一条新记录(数据透视表 table 包含列 id
、question_id
和 survey_id
.)
$userSurvey
将收到新创建的调查模型。有什么方法可以在 question_survey
枢轴 table 中接收新记录的 id
?
检索多对多关系时,Laravel会自动将枢轴附加到结果模型 ,因此在您的情况下,$userSurvey
将自动具有一个名为 pivot
的属性,当然,它包含枢轴。
但默认情况下,pivot
属性仅包含 外键 ,因此在您的情况下,question_id
和 survey_id
。如果你有任何其他额外的属性,(在你的情况下 id
),只需使用 withPivot
方法,如下所示。
public function surveys()
{
return $this->belongsToMany('App\Question', 'question_survey')
->withPivot('id');
}
现在您可以从枢轴 table:
访问id
$userSurvey->pivot->id;
bonus,如果你觉得pivot
这个词刚好不符合你的措辞风格,只需在你的关系中使用as
方法来自定义变量名[= 枢轴属性的 43=]。
public function surveys()
{
return $this->belongsToMany('App\Question', 'question_survey')
->as('question_survey')
->withPivot('id');
}
现在您可以从枢轴 table:
访问id
$userSurvey->question_survey->id;