Как предотвратить изменение основного идентификатора сводной таблицы при синхронизации отношения «многие ко многим» в Laravel - PullRequest
3 голосов
/ 23 февраля 2020

Я использую основной идентификатор сводной таблицы, поэтому он не должен меняться при синхронизации.

Метод sync в таблице многие ко многим удалит все записи в сводной таблице и заново вставит ее.

Вот мое решение:

        $variationUnits = collect($variationUnits);

        foreach ($variationUnits as $variationUnit) {
            if ($variation->units->contains($variationUnit['unit_id'])) {
                $variation->units()->updateExistingPivot($variationUnit['unit_id'], $variationUnit);
            }
            else {
                $variation->units()->attach([$variationUnit]);
            }
        }

        foreach ($variation->units as $variationUnit) {
            if (! $variationUnits->pluck('unit_id')->contains($variationUnit->id)) {
                $variation->units()->detach($variationUnit->id);
            }
        }

Есть ли какие-либо встроенные -в функции это сделать? если нет, как я могу улучшить это?

...