Подскажите, почему метод 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"). почему?