@ne-programmist

Почему sync() не отрабатывает во время выполнения скрипта, а только после завершения?

Подскажите, почему метод sync() не отрабатывает во время выполнения скрипта, а только после завершения?

// для примера запоминаем старые значения
$oldValues = $user->roles()->pluck('_id')->toArray();
// обновляем значения
$user->roles()->sync($request->roles ?? []);
// помещаем в переменную уже по идее обновленные значения
$newValues = $user->roles->pluck('_id')->toArray();
// возвращаем старые значения
$user->roles()->sync($oldValues);

// добавляем дамп
dd(
'old values:', $oldValues,
'sending values:', $request->roles,
'new values:', $newValues,
'again old values:', $user->roles->pluck('_id')->toArray()
);

на выходе:
^ "old values:"
^ array:1 [▼
  0 => "641dfc71b2dda8c19f040a5d"
]

^ "sending values:"
^ array:2 [▼
  0 => "641dfc71b2dda8c19f040a5d"
  1 => "641dfc84b2dda8c19f040a5e"
]

^ "new values:"
^ array:1 [▼
  0 => "641dfc71b2dda8c19f040a5d"
]

^ "again old values:"
^ array:1 [▼
  0 => "641dfc71b2dda8c19f040a5d"
]

и тут видно что в sending values попадает 2 значения, но они не записались в new values (точнее "641dfc84b2dda8c19f040a5e"). почему?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
После синка нужно (если реально нужно) перезагрузить отношение

$user->load('roles')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы