首页 > 解决方案 > Laravel 5.0 在附加后获取插入到数据透视表中的行的 id

问题描述

我有一个具有多对多关系的时事通讯和块模型。当我将一个块附加到时事通讯时,我想要插入到数据透视表中的行的 ID。

这是我尝试过的,但结果为“null”

$newsletter = Newsletter::findOrFail($newsletterId);
$newsletterBlock = $newsletter->blocks()->attach($blockId);
dd($newsletterBlock);

标签: phplaraveleloquent

解决方案


虽然这个问题很老,但是没有人给出正确的答案。如果您处于数据透视表具有主键的情况。withPivot当您想在加载相关模型时获取 id 时,使用方法很有用。但是,当您附加某些内容时,您无法获得 pivot_id;在这些情况下,最好的办法是使用连接到数据透视表的模型,然后您只需使用其模型插入数据透视表,而不是将两个模型连接在一起。

在这个例子中,首先创建一个模型,BlockNewsLetter如果有必要填充模型的$table$fillable属性,然后你就可以开始了。

$newsletter = Newsletter::findOrFail($newsletterId);
$blockNewsLetterPivot = BlockNewsLetter::updateOrCreate([
       'block_id' => $block_id ,
       'newsLetter_id' => $newsletter->id
    ]);
$inserted_pivot_id = $blockNewsLetterPivot->id;

推荐阅读