【问题标题】:A two digit month could not be found Data missing in Laravel找不到两位数的月份 Laravel 中缺少数据
【发布时间】:2017-07-03 08:14:46
【问题描述】:

我有一个表格,我通过 datepicker 以日期格式存储数据。在存储日期时,我正在做这样的事情:

$data['schedule'] = Carbon::parse($request->schedule)->toDateTimeString();

然后在模型中我定义如下:

protected $dates = [
    'schedule', 'created_at', 'updated_at', 'deleted_at'
];

现在在检索日期时我正在使用diffForHumans() 类似这样的东西:

$event->schedule = $event->schedule->diffForHumans();

但它会抛出这样的错误:

找不到两位数的月份。数据缺失

我检查了 mySQL 数据库的格式,我有这样的日期:

2017-07-02 14:38:23

编辑:

以前我在将日期存储在表格中时遇到问题,请参阅How to format date receiving through Vuejs Datepicker in laravel 了解详细说明。它会引发以下错误:

日期时间格式无效:1292 日期时间值不正确:第 1 行的“计划”列的“2017-05-04T18:30:00.000Z”

所以我选择使用Carbon::parse,同时将其存储在数据库中。

如何解决,帮帮我。

谢谢。

【问题讨论】:

  • 问题是你已经在 $data['schedule'] 之前更改了格式,将其注释掉并检查
  • @Exprator 如果我不使用Carbon::parse... 那么它不接受表中的值
  • 如果在$data['schedule'] 之前执行dd($request->schedule); 会得到什么?
  • 好的,因此您需要在碳中访问日期时间时对其进行格式化,就像您在数据库中的格式一样
  • @Exprator 是的,你可以说我正在寻找访问者。

标签: php laravel laravel-5.4 php-carbon


【解决方案1】:

尝试在您的模型中使用访问器方法。

public function getScheduleAttribute($value)
{
    return Carbon::parse($value)->diffForHumans();
}

并访问属性为

$event->schedule;

【讨论】:

    【解决方案2】:

    尝试设置日期时间格式('Y-m-d H:i:s')

    然后运行

    【讨论】:

    • 你的意思是作为mutator?
    • 是的@NitishKumar 对你有帮助吗?
    猜你喜欢
    • 2017-12-11
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多