То, что я предлагал, не так уж и надежно, на самом деле вам нужно делать
$clinic->users()->detach($sync->pluck('id'));
$clinic->users()->sync($sync);
Каждый раз, и вам нужно помнить об этом (и поэтому не надежно).
Я чувствую, что предлагаю вам сделать что-то вроде этого:
- Удалить уведомление в модели
- Создайте службу для этой операции, назовем ее
NotyfyUsersNewClinicService
(возможно, вы найдите имя получше):
<?php
namespace App;
use ...;
class NotyfyUsersNewClinicService{
public __constructor(){}
public updateUsers(Clinic& $clinic, Collection& $newUsers){
$clinic->users->diff($newUsers)->each(function(User $users){
$user->userData->notification_email = true;
\Mail::to($user->email)->send(new \App\Mail\ClinicManagerAdded(
$user,
$clinic));
});
$clinic->users()->sync($sync);
}
}
, тогда вам нужно будет использовать только это:
(new NotyfyUsersNewClinicService ()) -> updateUsers ($ clini c, $ users);
Примечание: лучше, если вы переместите электронное письмо в задание и отправите его, используя queue:work