您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2025/8/2 15:20:31发布23次查看
→推荐:《laravel教程》
由于项目中使用到了消息通知功能,于是自然而然写出了如下代码
public function index(request $request){ $notifications = \auth::user()->notifications()->paginate($request->size); return $this->success($notifications);}
然而发现日期格式化不对
但是模型基类使用了 hasdatetimeformatter trait, 代码如下:
<?phpnamespace 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,代码如下:
<?phpnamespace 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 模型来关联,代码如下:
<?phpnamespace 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视频教程》
以上就是分享laravel7消息通知日期序列化解决方案的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product