Как изменить получателя пользовательской модели уведомлений laravel?

У нас есть API, который подключается к нашим собственным приложениям. Наш API отправляет уведомления на основе действий пользователя, обновлений приложения и т. д.

Наш API имеет модульную структуру.

Пример

Наш user model в API находится в App\Modules\Accounts\Models\User. Каждый месяц мы отправляем пользователю уведомление из базы данных счетов из нашего API. В базе данных он добавляет уведомление, а notifiable_type равно App\Modules\Accounts\Models\User.

введите здесь описание изображения

Но в нашем пользовательском приложении user model находится в App\Modules\User, что приводит к тому, что у пользователя нет уведомлений.

Вопрос

Я знаю, что могу переместить user model точно по тому же пути в пользовательском приложении, но это кажется несколько неправильным. Есть ли способ указать user model в нашем user application, где получать уведомления базы данных? Что-то типа:

public function(){
    return $this->receivesNotificationsFrom('App\Modules\Accounts\Models\User');
}

person z0mbieKale    schedule 21.11.2019    source источник
comment
Не как по умолчанию. Я правильно понимаю: ваш API записывает это в вашу базу данных (таблица notifications правильно?), и единственным потребителем является ваше приложение?   -  person Paladin    schedule 21.11.2019
comment
@Paladin на данный момент, да!   -  person z0mbieKale    schedule 21.11.2019


Ответы (1)


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

Я бы:

  1. В потребляющем приложении вы создаете новую модель App\Modules\Accounts\Models\User, которая просто расширяет существующий класс User. Я бы проверил, смогу ли я достичь цели с таким подходом.

  2. Вы создаете ремесленную команду, чтобы просто переименовать классы в вашей таблице notification и позволить этому выполняться планировщиком laravel, поэтому в вашей таблице notifications есть правильные пространства имен для вашего приложения.

  3. Все это «кажется» неправильным, и я бы никогда не отказался от значений по умолчанию App\User, потому что вы сталкиваетесь с подобными ловушками и в конечном итоге получаете «беспорядочные» решения, такие как 1 или 2.

Извините, у меня сейчас нет идей получше, но, возможно, это даст вам немного вдохновения ????

person Paladin    schedule 21.11.2019
comment
Что ж, если вы собираетесь использовать модульную структуру, то другого способа добиться этого нет. - person z0mbieKale; 21.11.2019