Заполнение дополнительного поля в сводной таблице в Laravel 5.4

У меня две модели: 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
));

Но похоже, что это не работает. Какое обходное решение?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
419
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно сайту 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]);

Другие вопросы по теме