На Laravel 5.8, когда вы используете методы sync
, attach
или detach
, будут запущены соответствующие события модели (создание, обновление, сохранение, ...) для вызываемого действия.Обратите внимание, что использование sync
, attach
или detach
не приведет ни к какому событию, как синхронизация , присоединение или отключение .
В частности, последовательность событий, запускаемых для каждого элемента, передаваемого методу sync
:
- сохранение
- создание
- создание
- сохранено
Последовательность событий для каждого элемента, переданного методу attach
:
- сохранение
- создание
- созданный
- сохраненный
Последовательность событий для каждого элемента, переданного методу detach
:
Таким образом, если вы хотите наблюдать за операцией синхронизации, вам действительно нужно наблюдать событие сохранения (или сохранения) из сводной модели (в данном случае ProjectUser
):
class ProjectUser extends Pivot
{
public static function boot()
{
parent::boot();
static::saving(function ($item) {
// this will die and dump on the first element passed to ->sync()
dd($item);
});
}
}
Рабочий пример https://github.com/danielefavi/laravel-issue-example
Больше информации по этому вопросу https://github.com/laravel/framework/issues/28050
Примечания к выпуску вводят в заблуждение, и они имеют бизменилось https://github.com/laravel/docs/pull/5096.