【问题标题】:How to change laravel notification user model receiver?如何更改 laravel 通知用户模型接收器?
【发布时间】:2019-11-21 08:02:53
【问题描述】:

我们有一个连接到我们自己的第一方应用程序的 API。我们的 API 会根据用户操作或应用程序的更新等发送通知。

我们的API 采用模块化结构。

示例

API 中的user model 位于App\Modules\Accounts\Models\User。每个月,我们都会通过 API 向用户发送发票数据库通知。在数据库中,它添加了通知,notifiable_typeApp\Modules\Accounts\Models\User

但在我们的用户应用程序中,user model 位于App\Modules\User,这导致用户收到 0 个通知。

问题

我知道我可以将user model 移动到用户应用程序中完全相同的路径,但这似乎有些错误。有没有办法告诉我们user application 中的user model 在哪里接收数据库通知?比如:

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

【问题讨论】:

  • 不是默认设置。我的理解是否正确:您的 API 将其写入您的数据库(表 notifications 对吗?)并且唯一的消费者是您的应用程序?
  • @Paladin 到目前为止,是的!

标签: laravel laravel-5 laravel-notification


【解决方案1】:

我会像这样在 api 中解决这个问题(建议,我也会像你一样为用户使用你的命名空间,我永远不会这样做,但让我们提出建议)。有几种测试方法,最适合您的解决方案是什么。

我愿意:

  1. 在您的消费应用程序中,您创建一个新模型 App\Modules\Accounts\Models\User,它只是扩展了您现有的 User 类。我会测试,如果我能用这种方法达到目标。

  2. 您创建一个 artisan 命令来重命名 notification 表中的类并让它由 laravel 的调度程序运行,因此在您的 notifications 表中是您应用程序的正确命名空间。

  3. 这一切都“感觉”错了,我永远不会打破App\User 的默认设置,因为你会遇到这样的陷阱,最终会得到像 1 或 2 这样的“混乱”解决方案。

对不起,我现在没有更好的想法,但也许它会给你一些小灵感?

【讨论】:

  • 好吧,如果你打算使用模块化结构,那么没有其他方法可以实现这一点
猜你喜欢
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多