Laravel notification 数据库通知修改 notifiable_id 关联字段为其他字段

laravel notification数据库通知
数据库字段notifiable_id关联默认关联模型的id
怎么修改为其他字段?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 7

同问!~~~~

5年前 评论

我是通过改源码方式的
Illuminate\Notifications\Channels\DatabaseChannel.php

protected function getNotifiable_id(&$notifiable, Notification $notification)
{
    method_exists($notification, 'user_id') ? $notifiable->id=$notifiable->user_id : '';
}

   return [
        'id' => $notification->id,
        'type' => get_class($notification),
        'data' => $this->getData($notifiable, $notification),
        'read_at' => null,
        'notifiable_id'=> $this->getNotifiable_id($notifiable, $notification)
    ];

添加了一个notifiable_id和getNotifiable_id方法

然后使用

/*
 *@ 声明此方法将会把user_id变成 notifiable_id
 */
public function user_id()
{

}

我也不想动vendor啊 可是。。。真好用

5年前 评论

'notifiable_id'=> $this->getNotifiable_id($notifiable, $notification)

别要被误会 改notifiable_id是没有用的
所以我传递的是$notifiable的地址

只要调用$this->getNotifiable_id($notifiable, $notification)方法就可以了
因为懒 直接在这个reutnr [ ];里面调用这个方法了

5年前 评论

别像我上面那样改 非常的不好 使用查询修改的时候有坑的
有更好的办法

像这样就行了 不用改vendor
file

5年前 评论

@lyxxxh 请问 如果是使用Notifiable trait 的 notify 应该怎么修改呢? 还有您能解释一下 传递给subremind 的参数为什么不是一个实例? 以及各个参数的含义。

4年前 评论

@swswswlove

如果是使用 Notifiable trait 的 notify 应该怎么修改呢?
这个我不知道

new SubRemind(就是我自定义传递的数据)
传递到SubRemind的toArray($notifiable)的方法
只是自定义notifications表的data字段的数据

这些我建议你看下教程
[ Laravel 5.8 文档 ] 进阶系列 —— 通知

4年前 评论

问题

数据库通知修改 notifiable_id 关联字段为其他字段

解释

因为notifiable_id是使用id做notifiable_id

不可以更改成为其他字段

notifiable_id是怎么取的

notifiable_id是用 当前模型 的 id

例:这个$user从User模型查询就是用users表的id

例: 这个$user从UserSub();就是user_subs表的id

解决 (换不了其他字段 也不算解决)

只能查询那些用户订阅了
然后$user = User::WhereIn(订阅的用户)->get();
(notifiable_id当前模型的id 不可以换成其他字段 详细去看源码吧 可能我当时没看仔细)

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!