带有其他字段的Laravel数据透视表

时间:2018-03-05 06:50:22

标签: php laravel

您好,我正在尝试将我的数据透视表与其他一些字段同步。 但问题是我不知道如何在控制器中包含这些附加字段。直到现在,我从不需要数据透视表中的额外字段。所以我只是选择$model->relation->sync(array_of_ids, false),但无法弄清楚如何使用相关模型的ID发送其他字段。这是我目前的代码

型号:

public function speakers(){

    return $this->BelongsToMany('App\Models\Speaker', "speaker_session_items",
        "session_item_id", "speaker_id")->withPivot('event_id', 'edition_id')
        ->withTimestamps();
}

控制器:

public function store_speakers(Request $request){


    $speakers = $request->input('speaker_id');
    $session_item = SessionItem::findOrFail($request->input("session_item_id"));
    $related = ['event_id' => $request->input('evnet_id'),
                'edition_id' => $request->input('edition_id')];


    $status =  $session_item->speakers()->sync($speakers, $false);

   print_r($status);
}

我想发送相关数据(版本和事件)我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用save

    $status =  $session_item->speakers()->save($speakers, ['your-additional-attribute' => 'value']);

使用sync

$user->roles()->speakers( [ 
   1 => [ 'attribute' => value ],
   2 => [ 'attribute' => value ],

]);

为了节省许多费用,您可以使用saveMany()

    $status =  $session_item->speakers()->saveMany($YourData);

希望这有帮助