首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉氏8-日期铸造

拉氏8-日期铸造
EN

Stack Overflow用户
提问于 2021-04-29 10:19:28
回答 1查看 1.7K关注 0票数 0

我很困惑在Laravel 8中使用日期转换(https://laravel.com/docs/8.x/eloquent-mutators#date-casting)。

我需要从DB获得格式为Y-m-d\TH:i:s.vP的所有日期字段;例如:1990-02-12T01:08:12.820+00:00

为此,在我的Origin模型中,我设置了:

代码语言:javascript
复制
class Origin extends Model
{
    protected $casts = [
        'myDate' => 'datetime:Y-m-d\TH:i:s.vP'
    ];
}

现在,字段myDate被抛到Carbon

代码语言:javascript
复制
$ php artisan tinker
>>>
>>> $origin = App\Origin::first();
>>>
>>> dd($origin->myDate);
Illuminate\Support\Carbon @634784892^ {#4629
  #constructedObjectId: "000000005620d556000000007f71416e"
  #localMonthsOverflow: null
  #localYearsOverflow: null
  #localStrictModeEnabled: null
  #localHumanDiffOptions: null
  #localToStringFormat: null
  #localSerializer: null
  #localMacros: null
  #localGenericMacros: null
  #localFormatFunction: null
  #localTranslator: null
  #dumpProperties: array:3 [
    0 => "date"
    1 => "timezone_type"
    2 => "timezone"
  ]
  #dumpLocale: null
  date: 1990-02-12 01:08:12.820 UTC (+00:00)
}
>>>
>>>

但是当我得到属性时,输出不尊重Y-m-d\TH:i:s.vP格式

代码语言:javascript
复制
>>>
>>> echo $origin->myDate;
1990-02-12 01:08:12⏎
>>>
>>>

要获得所需的格式,我需要再次格式化:

代码语言:javascript
复制
>>>
>>> echo $origin->myDate->format('Y-m-d\TH:i:s.vP');
1990-02-12T01:08:12.820+00:00⏎
>>>
>>>

或者在使用模型toArray()之前转换它:

代码语言:javascript
复制
>>>
>>> echo $origin->toArray()['myDate'];
1990-02-12T01:08:12.820+00:00⏎
>>>
>>>

设置日期格式和获得正确输出的最佳实践是什么?我想用:

代码语言:javascript
复制
>>>
>>> echo $origin->myDate;
1990-02-12T01:08:12.820+00:00⏎
>>>
>>>

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-04-29 10:31:30

正如您所说的,laravel铸造格式不起作用,您可以创建这样的访问器

代码语言:javascript
复制
class Origin extends Model
{
    protected $casts = [
        'myDate' => 'datetime:Y-m-d\TH:i:s.vP'
    ];


    public function getMyDateAttribute($value)
    {
        return $value->format('Y-m-d\TH:i:s.vP');
    }
}

它将确保始终返回此格式。

参考链接https://laravel.com/docs/8.x/eloquent-mutators#defining-an-accessor

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67315442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档