У меня две модели: 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
));
Но похоже, что это не работает. Какое обходное решение?






Согласно сайту 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
));
От Документы
When attaching a relationship to a model, you may also pass an array of additional data to be inserted into the intermediate table:
$event->tickets()->attach($ticketId, ['ticket_quantity' => $qty]);