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

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

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了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消息通知日期序列化解决方案

相关文章

  • 2022-04-29MacOS安装VirtualBox的问题小结
  • 2022-04-29SEO的基础原则
  • 2022-04-29织梦cms内容页调用评论数量的方法
  • 2022-04-29分享Laravel整合Bootstrap4的完整方案
  • 2022-04-29Photoshop绘制任天堂Wii游戏手柄
  • 2022-04-29PS制作质感的立体字
  • 2022-04-29PHP替换Word中变量并导出PDF图片的实现方法
  • 2022-04-29PHP使用PHPAnalysis提取关键字中文分词的方法是什么
  • 2022-04-29Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
  • 2022-04-29uniapp上如何实现安卓app微信登录功能(操作流程总结)

文章分类

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

最近更新的内容

    • YII怎么输出sql语句?
    • css3怎么设置元素背面不可见
    • ThinkPHP5跟laravel的区别有哪些
    • WordPress教程:WordPress博客添加自定义鼠标样式
    • 利用滤镜及图层样式制作简单的积雪字
    • CDR凿刻效果的制作技巧
    • 帝国cms批量替换字段值SQL语法
    • Thinkphp volist多重循环原样输出数组key值
    • Photoshop打造超酷的火焰图形
    • ThinkPHP如何使用migrate实现数据库迁移

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

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