在Laravel 5.4中填充数据透视表中的其他字段

时间:2018-03-10 07:51:55

标签: laravel eloquent

我有两个模型:EventTicket。我在他们之间实施了Many to Many关系:

/**
 * Get the tickets for the events.
 */
public function tickets()
{
    return $this->belongsToMany('App\Ticket');
} 

/**
 * The tickets that belong to the event.
 */
public function events()
{
    return $this->belongsToMany('App\Event');
}

我还创建了名为event_ticket的数据透视表,并添加了3个字段:event_id (foreign key)ticket_id (foreign key)ticket_quantity。在创建新事件时,我将其保存,然后我想将sync数据放入数据透视表中,如下所示:

$event->tickets()->sync($request->tickets_type);

如何填写其他ticket_quantity字段?我是这样做的:

$event->tickets()->sync($request->tickets_type, array(
    'ticket_quantity' => 12
));

但它似乎不起作用。什么是解决方法?

2 个答案:

答案 0 :(得分:0)

根据网站https://laravel.com/docs/5.5/eloquent-relationships#many-to-many,在Saving Additional Data On A Pivot Table 部分中,您需要使用save()方法将其他数据传递到数据透视表

$event->tickets()->save($request->tickets_type, array(
    'ticket_quantity' => 12
));

答案 1 :(得分:0)

来自Docs

  

将关系附加到模型时,您还可以传递要插入到中间表中的其他数据数组:

$event->tickets()->attach($ticketId, ['ticket_quantity' => $qty]);