我通过ajax从我的表单中发布了格式的日期。
27/07/2016
当它击中我的控制器时,我将格式转换为Y-m-d,因为它存储在我的数据库中。
但是我收到以下错误:
DateTime :: __ construct():无法解析时间字符串(27/07/2016)at 位置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'];
答案 0 :(得分:5)
使用Carbon的Carbon::createFromFormat($format, $time, $tz);
方法:
$start = Carbon::createFromFormat('d/m/Y', $request->start);
return Company->expenses()->where('date_expense', $start)->get();
顺便说一句,没有必要进一步格式化日期,因为Laravel知道如何处理Carbon对象,并会在幕后为你自动完成。
答案 1 :(得分:3)
使用
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();
答案 2 :(得分:0)
如果你的laravel框架版本是5.0+
您可以php artisan -V
Laravel Framework 5.4.19
您可以从laravel文档https://laravel.com/docs/5.4/eloquent-mutators#date-mutators 中进行参考
以下是一个例子:
如果您的laravel Framework不包含Carbon,则可以运行
composer require nesbot/carbon
在您的模型中,例如Post model
class Post extends Model` { protected $fillable = ["title","body"];` protected $dates = [` 'created_at',` 'updated_at',` 'deleted_at'` ]; }
php artisan tinker
App\Post::create("title"=>"This is Title","body"=>"this is body")
然后你可以通过Carbon
获得最新创建的post_at App\Post::latest()->get()->created_at->diffForHumans()
你也可以在这样的刀片中使用相同的方法
{{ $post->created_at->diffForHumans() }}
Carbon文档网址如下:http://carbon.nesbot.com/docs/