信息发布→ 登录 注册 退出

分享Laravel7消息通知日期序列化解决方案

发布时间:2021-06-30

点击量:

→推荐:《laravel教程》

由于项目中使用到了消息通知功能,于是自然而然写出了如下代码

public function index(Request $request)
{
    $notifications = \Auth::user()->notifications()->paginate($request->size);

    return $this->success($notifications);
}

然而发现日期格式化不对

但是模型基类使用了 HasDateTimeFormatter trait, 代码如下:

format($this->dateFormat ?: 'Y-m-d H:i:s');
    }
}

查看源代码发现 Illuminate\Notifications\Notifiable 这个 trait 有两个 trait,其中
Illuminate\Notifications\HasDatabaseNotificationsnotifications() 方法关联的是Illuminate\Notifications\DatabaseNotification 这个类, 由于这个类是laravel 自带的, 所以serializeDate方法自然不会起作用。
找到了问题所在,那就解决吧。首先定义自己的 Notification 模型类, 继承自框架自带的 Illuminate\Notifications\DatabaseNotification 类,再引用 HasDateTimeFormatter trait,代码如下:

morphTo();
    }
}

最后我们在 User 模型中覆盖 notifications() 方法,使用我们自己定义的    Notification 模型来关联,代码如下:

morphMany(Notification::class, 'notifiable')->orderBy('created_at', 'desc');
    }
}

问题解决,效果如下:

 《相关推荐:最新的五个Laravel视频教程》 

标签:# 自带  # 自己的  # 的是  # 那就  # 自然而然  # 源代码  # 找到了  # 使用了  # 有两个  # 写出了  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!