Laravel Carbon格式日期


Laravel Carbon format date

我通过ajax从我的表单中发布了一个日期,格式如下。

2016年7月27日

当它到达我的控制器时,我将格式转换为Y-m-d,因为它像那样存储在我的数据库中。

然而,我得到了以下错误:

DateTime::__construct():无法在分析时间字符串(2016年7月27日)位置0(2):意外字符

我的控制器

public function call(Request $request)
    {              
        return Company->expenses()->where('date_expense', Carbon::parse($request->start)->format('Y-m-d'))->get();
    }

在我的支出模型中,我有以下定义为日期:

protected $dates = ['date_expense'];

使用Carbon的Carbon::createFromFormat($format, $time, $tz);方法:

$start = Carbon::createFromFormat('d/m/Y', $request->start);
return Company->expenses()->where('date_expense', $start)->get();

顺便说一句,没有必要进一步格式化日期,因为Laravel知道如何处理Carbon对象,并且会在幕后自动为您处理。

使用

Carbon::createFromFormat('d/m/Y', $request->start)->format('d/m/Y')

你必须用这个更改你的代码

return Company->expenses()->where('date_expense', Carbon::createFromFormat('d/m/Y', $request->start)->format('Y-m-d'))->get();

如果您的laravel框架版本是5.0+你可以通过php artisan -V 进行检查

我的是Laravel Framework 5.4.19你可以参考拉拉威尔的文件https://laravel.com/docs/5.4/eloquent-mutators#date-突变

以下是一个示例:

  1. 如果你的laravel框架不包含碳,你可以运行

    composer require nesbot/carbon

  2. 在您的型号上,如后型号

类Post扩展模型`{protected$fillable=["title","body"]`受保护的$dates=[`'created_at'`'updated_at'`'已删除_at'`];}
  1. 使用修补程序添加帖子在项目目录下打开终端跑php artisan tinker

App'Post::create("title"=>"This is Title","body"=>"this is body")

然后你可以获得Carbon 创建的最后一个帖子的created_at

通过App'Post::latest()->get()->created_at->diffForHumans()

你也可以在这样的刀刃上使用同样的方法{{ $post->created_at->diffForHumans() }}

Carbon文档url如下所示:http://carbon.nesbot.com/docs/