Laravel-如何在唯一方法中使用created_at的字符串类型

时间:2019-01-13 11:00:14

标签: laravel laravel-5 eloquent

我想用用户模型加载特定的属性:

$user = $user->only(['id', 'user_name', 'created']);

但是created_at获取date_time的对象,如下所示:

 {
 "id": 1,
 "user_name": "foo",
 "created_at": {
    "date": "2018-12-30 11:34:57.000000",
    "timezone_type": 3,
    "timezone": "...."
 },
}

如何仅使用方法获取created_at的字符串类型?

谢谢

2 个答案:

答案 0 :(得分:3)

有多种方法可以实现这一目标。

您可以这样在模型上设置$casts[]数组:

protected $casts = [
    'created_at' => 'string'
];

这意味着,每次您尝试访问created_at时,它将返回一个字符串表示形式。

或者,您也可以定义Accessor,例如

public function getCreatedAtAttribute()
{
    return (string) $this->created_at; 
}

但是,我通常不喜欢搞混created_atupdated_at属性。所以通常我会做这样的事情:

public function getFormattedCreatedAtAttribute()
{
    return $this->created_at->toFormattedDateString();
}

然后在您的特定情况下为:

$user = $user->only(['id', 'user_name', 'formatted_created_at']);

答案 1 :(得分:0)

您可以尝试一下

'create_at' => now();

或 'crated_at'=> Carbon :: now(); 'updated_at'=> Carbon :: now();