Я создаю систему управления событиями, в которой к событиям может быть подключено несколько пользователей, отвечающих за разные типы вещей (два за звук, другие три источника света и т. Д. c ..), и я присоединяю этот тип в качестве дополнительного параметр моей сводной таблицы, например:
public function users() {
return $this->belongsToMany('App\User')->withPivot('type')->withTimestamps();
}
Сводная таблица состоит из столбцов - тип, идентификатор_ события, идентификатор_пользователя
Код, который отвечает за заполнение сводной таблицы:
foreach ($types as $type) {
$users = $request->input($type);
if ($users!=null){
foreach ($users as $user) {
$event->users()->syncWithoutDetaching([ $user => ['type' => $type]]);
}
}
}
Заполняет таблицу начальными значениями, но синхронизирует значения типа (отсоединяя старые), если один и тот же пользователь передан для того же события.
Например: If " Событие "Пользователь" Джон "отвечает за" Свет "и" Звук ", оно должно создать две строки в сводной таблице.
Также, если я изменю" syncWithoutDetaching "на" присоединить ", я получу поведение, которое мне нужно , но сохраняет те же строки, которые мне не нужны.