Я использую Laravel 5.1
Несколько дней назад я использовал protected $dates = ['license_expire']
в моей модели, чтобы преобразовать дату строки в экземпляры Carbon. В HTML значение по умолчанию в форме создания для даты было Carbon\Carbon::now()->format('Y-m-d')
Чтобы показать оповещение на домашней странице, я использовал <p>Licence Expired: <b>{{ $employee->license_expire < Carbon\Carbon::now()?'License has expired':$employee->license_expire->diffForHumans() }}</b></p>
До тех пор метод diffForHumans() работает нормально.
Но в этом случае значение по умолчанию для формы редактирования также было сегодня, независимо от того, что было в базе данных (я использую частичную форму). Чтобы решить эту проблему, я изменил значение по умолчанию в HTML, это NUll. И добавьте еще один метод в моей модели, чтобы показать текущую дату в форме создания.
public function getLicenseExpireAttribute($date)
{
return Carbon::parse($date)->format('Y-m-d');
}
После этого, когда я перехожу на домашнюю страницу, у меня есть FatalErrorException
, который говорит Call to a member function diffForHumans() on string
Когда я проверяю дату с помощью dd($employee->license_expire)
, она снова становится STRING.
Может ли кто-нибудь сказать мне, как я могу преобразовать строку в Carbon в этой ситуации?
или
Сделайте мою дату для формы формы как сегодняшнюю дату, дату изменения формы из базы данных, и я могу использовать diffForHumans(), чтобы отображать предупреждение на главной странице?