Событие модели "удалено" не возвращает все атрибуты сводки - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть отношение многие ко многим между Пользовательской и Ролевой моделями.

Я хочу сохранять историю (ведение журнала) в моей базе данных каждый раз, когда я присоединяю или отсоединяю пользователя к роли.

$role->users()->attach(...);

Поскольку Laravel не может запускать события модели по умолчанию в сводных таблицах, я обнаружил, что должен был создать свою собственную пользовательскую сводную модель. Итак, вот что я сделал до сих пор:

внутри ролевой модели:

    public function users(): MorphToMany
    {
        return $this
            ->morphedByMany(...)
            ->using(\App\Pivot\RolePivot::class) // <---------- NOTICE THIS
            ->withTimestamps();
    }

внутри модели RolePivot:

class RolePivot extends MorphPivot
{
    use RecordsModelHistory;
}

внутри моей черты RecordsModelHistory:

    protected static function bootRecordsModelHistory()
    {
        static::historisableModelEvents()->each(function ($event) {
            return static::$event(function (Model $model) use ($event) {
                /** @var self $model */
                if($event==='deleted'){dd($model);} // <---------- NOTICE THIS
                if (! $model->shouldRecordModelHistory($event)) {
                    return;
                }

                $model->saveModelHistory($event);
            });
        });
    }

dd($model) выполняется, когда я выполняю $role->users()->detach(...);. Пока все хорошо, поскольку отсоединение пользователя действительно означает удаление строки из сводной таблицы.

Моя проблема заключается в следующем: $model->attributes не содержит всех атрибутов, которые я ожидал увидеть.

У меня есть только role_id и model_id: https://i.imgur.com/17Q3gTk.png

, хотя в моей сводной таблице model_has_roles есть столбцы model_type, model_id, role_id , created_at, updated_at: https://i.imgur.com/cx0VA8B.png

Почему он возвращает только role_id и model_id, тогда как я ожидаю еще +3 атрибута?

Как ни странно, я успешно получаю все 5 атрибутов (5 столбцов сводной таблицы) при присоединении (событие = created), но только 3 атрибута при отсоединении (событие = deleted)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...