Что означает `$ protected date` sh в моделях Eloquent - PullRequest
0 голосов
/ 13 февраля 2020

Я писал простой тест для оценки сохранения будущей даты публикации sh для сохраненной статьи. Вот так я отправляю данные с опубликованной sh датой на завтра

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

из красноречивой модели, эта ошибка не возникает. Что подводит меня к моему вопросу, что делает эта строка выше?

1 Ответ

1 голос
/ 13 февраля 2020

На самом деле эта строка превращает эти поля в объекты Carbon, и laravel поможет узнать, что это поля даты. Например: если вы напишите эту строку в вашей модели, защищено $ date = ['Удаленный_кат', 'publish_date']; Вы можете использовать $ model-> publish_date-> format ('d / m / Y') для форматирования даты.

...