$受保护的日期在雄辩的模型中完成什么

问题描述 投票:0回答:1

我正在编写一个简单的测试,以评估为保存的文章保存将来的发布日期。这就是我发送明天发布日期的数据的方式

    $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'];

从雄辩的模型中,不会发生此错误。这使我想到我的问题,上面的这一行做什么?

php laravel eloquent php-carbon
1个回答
0
投票

实际上,此行将这些字段转换为Carbon对象,这将有助于laravel知道这些是日期字段。例如 :如果您在模型中编写此行protected $ dates = ['deleted_at','publish_date'];您可以使用$ model-> publish_date-> format('d / m / Y')格式化日期。

© www.soinside.com 2019 - 2024. All rights reserved.