关于laravel7版本+laravel-admin1.8版本组合出现的时间显示问题

 

首先,先来看一下本地环境!

关于laravel7版本+laravel-admin1.8版本组合出现的时间显示问题_第1张图片

从图中,我们可以看出,主要的:

php/7.3.17

laravel/7.18.0

laravel-admin/1.8.1

这个应该是比较新的后台搭建环境了!

 

 

在本地开发测试中,无意发现了,时间显示问题,如图:

 

 

纳尼,这是????(一堆问号顿时浮现在我的脑海中)

 

当时,我的想法是:

1. 数据库中时间存储格式有问题,想法主要基于:

我是用 int 来存储时间的,因为要用laravel-admin作为后台,所以必须要开启时间戳维护

遂在模型里加上了

/**
 * 保存 创建时间/修改时间 为 int 格式
 */
public function fromDateTime($value){
    return strtotime(parent::fromDateTime($value));
}

2. 和laravel版本有关系,我看了laravel6版本+laravel-admin1.7.9组合的项目,还真没有这个问题...

 


 

 

以下是解决经历:

 

1. 问问百度,谷歌,Stack Overflow......看看其他博主是怎么解决的

2. 在搜索一通之后,发现关于这个问题的博客或文章还真挺少的,但是还是发现了两篇相关的:

1)首先,这篇文章吸引了我,但是解决方法我并没有采纳,因为有几条回复认为有争议

https://learnku.com/laravel/t/42593

2)又看到了这样一篇文章,说是laravel7更新问题,这和上面文章问题里面的最新回答不谋而合

https://blog.csdn.net/qq_37868757/article/details/107043935

 

所以,抓住了线索,去看看laravel-china的laravel7文档:

https://learnku.com/docs/laravel/7.x/upgrade/7445#date-serialization

解决方法说去覆写serializeDate方法,并且,下面还提到了:

技巧:该更改仅影响序列化为数组和 JSON 的模型和模型集合,对数据库中的日期没有影响。 

 

纳尼,那就是还是有些许影响喽。

 

本来我还是想采纳这个做法的,但是,当时脑子灵机一动!!!!

"laravel-admin不是有demo吗,rbac什么的,在那里也有增删改查呀"

 

遂,去看看,其中角色管理,是不是也报错,这一看,还真是不报错,于是我又新增了一条角色,还是不报错,如图:

顿时,我突然来了兴致,"难道,大牛@z-song解决了这个问题,难道他的model有什么不同吗"

 

遂,去laravel-admin自带的角色model里看了一下:

文件位置:vendor/encore/laravel-admin/src/Auth/Database/Role.php

部分代码:

关于laravel7版本+laravel-admin1.8版本组合出现的时间显示问题_第2张图片

 

大致看了一下,也没有什么不同啊,但是文件开头的引用却引起了我的注意:

use Encore\Admin\Traits\DefaultDatetimeFormat;

难道是多引用了一个 trait 类的问题??

 

于是我到我的model里去引用了一下,果然,OK\(^o^)/~,真的可以了,如图:

关于laravel7版本+laravel-admin1.8版本组合出现的时间显示问题_第3张图片

 

结尾:(这算是站在巨人的肩膀上解决问题吗?O(∩_∩)O哈哈~)

 

你可能感兴趣的:(问题BUG集锦,Laravel-admin,Laravel)