我修改了我的模型日期属性以计算生日,但是现在当我的表单中加载日期时(我使用表格集合)我得到它像1979-07-17 00:00:00
右输出应该是1979-07-17
protected $dates = ['geburtstag'];
public function age()
{
return $this->geburtstag->diffInYears(Carbon::now());
}
我尝试从
这样的模型进行修改 protected $geburtstagFormat = 'Y-m-d';
但没有帮助。
在这种情况下我做错了什么
答案 0 :(得分:1)
另一种方法 首先解析$ this-> geburtstag-> diffInYears(Carbon :: now())
$createdAt = Carbon::parse($this->geburtstag->diffInYears(Carbon::now()));
然后你可以使用
$suborder['payment_date'] = $createdAt->format('M d Y');
答案 1 :(得分:1)
如果您不想存储出生时间,则应将数据库中的数据类型更改为date
,而不是timestamp
或datetime
。这将自动解决问题,因为当您在视图上调用属性时,这将精确地提取它在数据库中的显示方式。否则,如果要保持数据库不变,则必须在模型中定义mutator,如下所示:
public function getGeburstag($value){
return Carbon::parse($value)->toDateString();
}
这会将geburtag
属性的原始值替换为Y-m-d
格式的值。
答案 2 :(得分:1)
为什么不使用$model->geburtstag->format('Y-m-d')
?
您还可以在模型中创建变体,如:
public function getGeburstagDateAttribute($value) {
return $this->geburtstag->format('Y-m-d');
}
并像这样使用它:
$model->geburtstag_date // outputs geburtstag date in 'Y-m-d' format
要在模型中设置日期格式,请在模型中使用protected $dateFormat = 'Y-m-d';
。