我正在使用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中的默认值为空。并在我的模型中添加了另一个方法,在创建表单中显示当前日期。
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)
检查日期时,它又变成了字符串。
有人可以告诉我在这种情况下如何将字符串转换为Carbon吗?
或者
让我的创建表单默认日期为今天的日期,编辑表单的日期从数据库中获取,并且我可以使用diffForHumans()在主页中显示警报?