存储多对多关系时从数据透视表 table 取回数据

Get back data from the pivot table when store a many-to-many relationship

我在项目和调查之间建立了多对多关系。我可以使用

成功地在调查和项目之间建立关系

$userSurvey = $project->surveys()->save($survey);

这将在 question_survey 数据透视表 table 中创建一条新记录(数据透视表 table 包含列 idquestion_idsurvey_id.)

$userSurvey 将收到新创建的调查模型。有什么方法可以在 question_survey 枢轴 table 中接收新记录的 id

检索多对多关系时,Laravel会自动将枢轴附加到结果模型 ,因此在您的情况下,$userSurvey 将自动具有一个名为 pivot 的属性,当然,它包含枢轴。

但默认情况下,pivot 属性仅包含 外键 ,因此在您的情况下,question_idsurvey_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;