php - 更改 Laravel DataTables 时间格式
问题描述
在我的订单表中,created_at
列以这种格式保存:Y-m-d H:i:s
但是在数据表中,是这样显示的。
我将此代码添加到 Order 模型中:
public function getCreatedAtAttribute($date)
{
return is_null($date)
? ''
: Carbon::createFromFormat('Y-m-d H:i:s', $date)->timezone(config('app.timezone'))->toDateTimeString();
}
public function getUpdatedAtAttribute($date)
{
return is_null($date)
? ''
: Carbon::createFromFormat('Y-m-d H:i:s', $date)->timezone(config('app.timezone'))->toDateTimeString();
}
但是在此之后,数据表不起作用并返回以下错误:
DataTables 警告:table id=DataTables_Table_0 - Ajax 错误。有关此错误的更多信息,请参阅http://datatables.net/tn/7
我该如何解决?
解决方案
有很多方法可以做到这一点,你可以从你的控制器中做到这一点:
return Datatables::of($query)
->addColumn('created_at', function ($row){
return $row->created_at->format('d-M-Y');
})
替代方案:在 Eloquent 模型上使用 toArray 或 toJson 方法时,Laravel 7 使用了新的日期序列化格式。以前,日期将被序列化为如下格式:
2020-12-02 20:01:00
使用 ISO-8601 格式序列化的日期将如下所示:
2020-12-02T20:01:00.283041Z
如果您想继续使用以前的行为,您可以覆盖serializeDate()
模型上的方法:
use DateTimeInterface;
protected function serializeDate(DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
在此处查看官方升级文档
推荐阅读
- javascript - 高清录制 - Ziggeo Recorder v2 JS
- javascript - React-Redux 问题。找不到变量 mapDispatchToProps
- javascript - 如何将其他项目添加到存储数组并且在重置时仍然能够将数组设置为空?
- sql - 检查 2 个表是否有相同的 ID,如果表 1 中的 ID 存在于表 2 中,则在列中返回 1/0
- python - 文本到列熊猫
- bash - Bash 脚本未正确检查 null
- php - preg_match 与多行无法正常工作
- python - 无法将 cuda 编译代码与 pytorch 一起使用
- angular - 无法使用注入的 angularjs 服务测试角管
- c++ - 在 C++ 中处理北欧字符的字符串很困难