• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 分享Laravel7消息通知日期序列化解决方案

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

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了Laravel7,消息通知,日期序列化等相关知识,希望对您有所帮助

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

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

然而发现日期格式化不对


60e5538b9db7e.png


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

<?php namespace App\Models\Traits; trait HasDateTimeFormatter{    protected function serializeDate(\DateTimeInterface $date)    {        return $date->format($this->dateFormat ?: 'Y-m-d H:i:s');    }}

查看源代码发现 Illuminate\Notifications\Notifiable 这个 trait 有两个 trait,其中

Illuminate\Notifications\HasDatabaseNotifications 的 notifications() 方法关联的是Illuminate\Notifications\DatabaseNotification 这个类, 由于这个类是laravel 自带的, 所以serializeDate方法自然不会起作用。

找到了问题所在,那就解决吧。首先定义自己的 Notification 模型类, 继承自框架自带的 Illuminate\Notifications\DatabaseNotification 类,再引用 HasDateTimeFormatter trait,代码如下:

<?php namespace App\Models; use App\Models\Traits\HasDateTimeFormatter;use Illuminate\Notifications\DatabaseNotification; class Notification extends DatabaseNotification{    use HasDateTimeFormatter;     public function notifiable()    {        return $this->morphTo();    }}

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

<?php namespace App\Models; use App\Models\Traits\HasDateTimeFormatter;use Illuminate\Foundation\Auth\User as Authenticatable;use Tymon\JWTAuth\Contracts\JWTSubject; class User extends Authenticatable implements JWTSubject{    use Notifiable, HasDateTimeFormatter;     public function notifications()    {        return $this->morphMany(Notification::class, 'notifiable')->orderBy('created_at', 'desc');    }}

问题解决,效果如下:


60e553fe0f4c1.png


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • AI绘制质感电池图标
  • Discuz“密码错误次数过多,请15分钟后登陆”
  • PHP中fopen()函数的使用(附代码示例)
  • 原生小程序如何封装请求,优雅地调用接口?
  • Photoshop金属质感的艺术字教程
  • Photoshop利用通道及滤镜制作放射光束
  • JS判断当前浏览器是否是微信端
  • jQuery怎么删除元素但保留子元素
  • Photoshop绘制金属质感的指南针
  • Photoshop制作立体有机玻璃文字效果

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 在PHP中如何使用后期静态绑定
    • PHP+jQuery实现中国地图热点数据统计展示效果
    • phpmyadmin如何重置密码?
    • Thinkphp6中怎么封装优化api数据格式
    • PHP中怎么解决serialize函数中文乱码的问题
    • navicat出现1045错误怎么解决
    • php base64如何转换为图片
    • Javascript怎样验证手机号码
    • 教你使用PHP数据库迁移工具“Phinx”
    • CSS3怎么实现动画结束不消失效果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有