【发布时间】:2021-07-23 19:09:14
【问题描述】:
我正在实现 Laravel 通知系统。我已经在 DB 中进行了插入测试,它运行良好,但是在注册通知时,我看到它带有“奇怪”的数据(从我的角度来看)。
| id | type | notifiable_type | notifiable_id |
|---|---|---|---|
| 634db0ee-a9c0... | App\Notifications\HeatMapNotification | App\Models\User | 1 |
我不明白为什么“id”列带有 uuid 类型的 id。我的意思是,使用自动增量 ID 就足够了(我认为)。
在“类型”列中,我想插入一个更简单的文本。
我认为“notifiable_type”列没有任何用处。在我的情况下,应通知的实体将始终是用户。
我还想更改一些列名(notifiable_id --> user_id)
如何进行这些更改?
非常感谢您。
【问题讨论】:
-
你可以切换到使用你自己的通知系统,它本质上是 Laravel 的副本,或者你可以离开它,这是我推荐的。你永远不知道,你可能想在未来通知其他事情。
-
@kemp 是的,我理解你,但是当我真的只想知道实体的类型(“heat_map”)时,我发现看到像“App\Notifications\HeatMapNotification”这样的文本字符串很烦人,甚至其他人都喜欢应通报实体的类型。什么时候可以是用户以外的东西? uuid 列类型对我来说也没有任何意义。我真的不明白他们制作这张桌子时的想法。
-
他们试图提供最大的灵活性。考虑一个有两种用户类型的应用程序:医生和病人。他们都登录系统并可以接收通知。另外,如果您将通知放在子目录中怎么办?
App\Notifications\Appointment\Reminder和App\Notifications\Prescription\Reminder都将被称为提醒。那么,为什么不只存储完整的类名呢? -
@kemp,是的,你是对的。无论如何,就我而言,这不是必需的,所以我将等待帮助。感谢您的提示 kemp :)