Метод syn c принимает массив идентификаторов для размещения в промежуточной таблице. Любые идентификаторы, которых нет в данном массиве, будут удалены из промежуточной таблицы. Таким образом, после завершения этой операции в промежуточной таблице будут существовать только идентификаторы из данного массива:
$item->species()->sync([1, 2, 3]);
Вы также можете передать дополнительные значения промежуточной таблицы с идентификаторами:
$item->species()->sync([1 => ['number' => 4, 'weight' => 20]);
Обратите внимание, что вы должны использовать вложенный массив. Где ключ массива - это идентификатор элемента, который нужно связать, а его содержимое - дополнительные столбцы вашей сводной таблицы.
$attach = collect($data['species'])->mapWithKeys(function ($specie) {
return [$specie => ['number' => 4, 'weight' => 20]];
});
$item->species()->sync($attach);