我通过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-突变
以下是一个示例:
-
如果你的laravel框架不包含碳,你可以运行
composer require nesbot/carbon
-
在您的型号上,如后型号
类Post扩展模型`{protected$fillable=["title","body"]`受保护的$dates=[`'created_at'`'updated_at'`'已删除_at'`];}
- 使用修补程序添加帖子在项目目录下打开终端跑
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/