Ger*_*lia 6 php mysql date eloquent laravel-5.2
我$dates在Quota Eloquent模型上有我的属性,如下所示:
protected $dates = ['start', 'end'];
Run Code Online (Sandbox Code Playgroud)
从数据库中检索数据时,这些字段不会设置为Carbon实例,而是设置为字符串.同样的事情created_at和updated_at属性.
有什么想法会发生什么?我在MySQL数据库上使用TIMESTAMPS字段,而Laravel版本是5.2.
在你的模型中试试这个代码:
public function getStartAttribute($date)
{
return Carbon::parse($date);
}
public function getEndAttribute($date)
{
return Carbon::parse($date);
}
Run Code Online (Sandbox Code Playgroud)
这里的约定是先写get然后字段名和attribute。他们应该一起写在骆驼案中。因此,在您的情况下,方法名称变为getStartAttributeand getEndAttribute。
如果表位于用户模型中(可以是新闻等其他内容),则可以使用它,
$user = User::find($id);
dump($user->start->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)
这将转储起始列并将其格式化为 Ymd。
还有一种方法可以通过以下方法实现此目的,它将start数据库的列转换为 Carbon 对象并将其返回为start_dateor startDateor StartDate:
public function getStartDateAttribute() {
return Carbon::parse($this->start);
}
Run Code Online (Sandbox Code Playgroud)
您还可以查看 Laravel 文档:https://laravel.com/docs/5.2/eloquent-mutators#date-mutators