我正在编写一个简单的测试,以评估为保存的文章保存将来的发布日期。这就是我发送明天发布日期的数据的方式
$response = $this->putJson('/api/blogs/' . $blogPost->slug, [
'blog' => [
'publish' => true,
'publish_date' => Carbon::today()->addDays(1),
]
]);
$response->assertStatus(200);
在控制器上,将其保存如下
$blogData = $request->json()->all()['blog'];
$blog->fill($blogData);
$blog->save();
运行测试时出现以下错误
[2020-02-13 09:42:11] local.ERROR: Unexpected data found.
Trailing data {"userId":6,"exception":"[object] (InvalidArgumentException(code: 0): Unexpected data found.
Trailing data at /Users/anadi/Code/website/adminpanel/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php:576)
[stacktrace]
#0 /Users/anadi/Code/website/adminpanel/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(598): Carbon\\Carbon::rawCreateFromFormat('Y-m-d H:i:s', '2020-02-14T00:0...', NULL)
#1 /Users/anadi/Code/website/adminpanel/vendor/laravel/framework/src/Illuminate/Support/DateFactory.php(217): Carbon\\Carbon::createFromFormat('Y-m-d H:i:s', '2020-02-14T00:0...')
#2 /Users/anadi/Code/website/adminpanel/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(261): Illuminate\\Support\\DateFactory->__call('createFromForma...', Array)
#3 /Users/anadi/Code/website/adminpanel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(813): Illuminate\\Support\\Facades\\Facade::__callStatic('createFromForma...', Array)
#4 /Users/anadi/Code/website/adminpanel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(835): Illuminate\\Database\\Eloquent\\Model->asDateTime('2020-02-14T00:0...')
#5 /Users/anadi/Code/website/adminpanel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(580): Illuminate\\Database\\Eloquent\\Model->fromDateTime('2020-02-14T00:0...')
#6 /Users/anadi/Code/website/adminpanel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(329): Illuminate\\Database\\Eloquent\\Model->setAttribute('publish_date', '2020-02-14T00:0...')
#7 /Users/anadi/Code/website/adminpanel/app/Http/Controllers/BlogPostController.php(102): Illuminate\\Database\\Eloquent\\Model->fill(Array)
删除时
protected $dates = ['deleted_at','publish_date'];
从雄辩的模型中,不会发生此错误。这使我想到我的问题,上面的这一行做什么?
实际上,此行将这些字段转换为Carbon对象,这将有助于laravel知道这些是日期字段。例如 :如果您在模型中编写此行protected $ dates = ['deleted_at','publish_date'];您可以使用$ model-> publish_date-> format('d / m / Y')格式化日期。