【问题标题】:Using protected $dateFormat throws trailing error使用受保护的 $dateFormat 会引发尾随错误
【发布时间】:2017-05-29 13:23:03
【问题描述】:

我正在尝试使用以下方法格式化模型中的日期:

protected $dateFormat = "Y-m-d";

我收到此错误:

"The separation symbol could not be found Trailing data" on line 582 of C:\wamp64\www\israplanet.com\vendor\nesbot\carbon\src\Carbon\Carbon.php

使用

protected $dateFormat = "Y";

导致此错误:

"Trailing data" on line 582 of C:\wamp64\www\israplanet.com\vendor\nesbot\carbon\src\Carbon\Carbon.php

这个例子来自October docs

这里有什么问题?

【问题讨论】:

  • 阅读有关变异器的信息:laravel.com/docs/5.4/eloquent-mutators
  • 我做到了。并从那里获取此代码。不(
  • 我不认为这是 OctoberCMS 的问题,我认为是 Laravel 的 Carbon:stackoverflow.com/a/37958512/451969 所以,您可能正在尝试为已包含数据的列指定日期格式,格式不正确(我认为这是“尾随数据”告诉您的内容),或者您正在以一种意想不到的方式进行格式化。如果您想确定,请搜索Trailing data 的来源并查看它的来源/来源。
  • 再次,我从 laravel/october 文档中获取了这种格式。并得到这个错误。也尝试了尾随数据。我唯一能想到的就是干净的数据库。我确实有一些其他格式的记录。但是,它应该只取日期并格式化它,而不是改变。
  • 我刚刚测试了这个,结果是一样的。当您创建一个对象并立即使用它时它工作正常,因为它包含碳实例,但是当您从表中获取现有数据时会出现问题。这发生在Carbon::createFromFormat('Y-m-d', '2017-05-24 00:00:00'),其中第一个参数是指定的格式,第二个是来自 db 的值。

标签: laravel date date-format octobercms php-carbon


【解决方案1】:

我不熟悉您给出的示例(即:使用protected $dateFormat = "Y-m-d";),但是当我做这样的事情时,我倾向于在模型上使用访问器:

public function getFormattedDateAttribute($value)
{
     return $this->created_at->format('Y-m-d');
}

显然created_at 需要替换为日期字段的名称。然后您就可以在 Twig 中以 {{ array.formatted_date }} 的身份访问它。

【讨论】:

  • octobercms.com/docs/database/mutators#date-mutators 在文档中。检查您的解决方案。但我确信它必须工作,只需要弄清楚如何)
  • 不工作。我正在使用它来获取日期格式的集合。使用车把,日期过滤器不起作用。
  • @aleXela - 你为什么不使用 Twig 格式化日期,因为它打算使用它? {{ variable_name|date("Y-m-d") }}?拥有一个名为array 的模板变量和一个formatted_date 的属性也有点抽象。
  • 我使用车把的问题。那里没有这样的过滤器。给出一个错误。
  • 啊,车把。你应该do that with Javascript。喜欢:{{formatDate your_date_property "Ymd"}}Ymd 是自定义日期格式化程序。如果您要使用 Handlebars,这就是它所期望的完成方式,并提供完整的日期时间作为源。
【解决方案2】:

我不能将此命名为好的答案,但现在我至少可以继续。 我只是将列的格式(created_at 和 updated_at)更改为日期格式,它以我想要的方式存储,但我总是试图解决问题(这个习惯占用了我很多时间)。

另一种选择是为此使用车把助手。 但我想了解根本问题。

(顺便说一句 - 感谢您的回答)

【讨论】:

  • 那么解决原始问题的方法是将列类型从某物更改为Date 类型?那是在您的问题中使用相同的确切代码吗?之前的字段类型是什么?
  • 抱歉,没弄明白是时间戳。
猜你喜欢
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多