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

 所属分类:php教程

 浏览:167次-  评论: 0次-  更新时间:2022-05-31
描述:这是一篇php教程 分享Laravel7消息通知日期序列化解决方案的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。 ...
这是一篇php教程 分享Laravel7消息通知日期序列化解决方案的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。

→推荐:《laravel教程》

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

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

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

然而发现日期格式化不对

Laravel 7 消息通知日期序列化解决方案

但是模型基类使用了 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\HasDatabaseNotificationsnotifications() 方法关联的是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');
    }
}

问题解决,效果如下:

Laravel 7 消息通知日期序列化解决方案 《相关推荐:最新的五个Laravel视频教程》

以上就是分享Laravel7消息通知日期序列化解决方案的详细内容,更多请关注zzsucai.com其它相关文章!

 标签:
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!