我有两个模型:Event
和Ticket
。我在他们之间实施了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
));
但它似乎不起作用。什么是解决方法?
答案 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]);