【问题标题】:datetime Mutator Laravel日期时间修改器 Laravel
【发布时间】:2023-03-08 14:52:01
【问题描述】:

我想转换 mi 数据库中的日期字段,以不同的格式显示它们。 在数据库中,日期字段以“y-m-d”格式存储,但我想以“d-m-y”格式显示它们。 我确实找到了一个特征(torzer mutator),这就是我想要的,但我需要知道如何在不指定要进行转换的列的情况下做到这一点,这是一种自动检测具有日期字段的列的方法.

我知道这可能没有意义,但我的老板想减少这方面的代码,不幸的是我没有找到类似的东西。

<?php

use Torzer\Common\Traits\MapDateTimeMutator;

class MyClass extends Model {

use MapDateTimeMutator;

protected $mapDateTimeMutator = [
    'start_date' => ['from' => 'd/m/Y', 'to' => 'Y-m-d'],
    'finish_date' => ['from' => 'd/m/Y', 'to' => 'Y-m-d']
];

protected $dates = [
    'approved_at', 'start_date', 'finish_date'
];

...

这就是 Torzer mutator 的工作方式。

【问题讨论】:

  • 你为什么不只是 {{ date('YOUR_FORMATE_SPECIFER',$date') }} 在刀片中显示,而不更改数据库中的默认日期结构?
  • @ViperTecPro 添加到模型上$dates属性的列被转换为Carbon实例,所以你不需要使用PHP的date(),你可以调用format()方法财产,例如{{ $model-&gt;start_date-&gt;format('d/m/y') }}
  • ohhhk 明白了,谢谢
  • @RossWilson 谢谢兄弟,我会建议,这对我有用。

标签: php laravel datetime php-carbon


【解决方案1】:

Carbon 是一个很好的库。

另外我不知道您是如何设置模型的,但我的示例基于 laravel 的文档

Use Carbon\Carbon;

//where 'Date' = your attribute name
//so after you do something like a $m = model::find() and reference
//$m->date it will mutate it
public function getDateAttribute($value) {
    return Carbon::parse($value)->format('d-m-Y');
}

碳文档: https://carbon.nesbot.com/docs/

【讨论】:

  • 添加到模型上$dates 属性的任何列都将转换为开箱即用的碳实例。
  • 没什么可遗憾的!我只是想我会让你知道:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 2015-05-27
相关资源
最近更新 更多