当前位置: 首页 > 知识库问答 >
问题:

Laravel:如何设置模型属性转换的日期格式?

逄学潞
2023-03-14

我在模型中有:

protected $casts = [
    'date' => 'date',
];

laravel是否有能力设置演员表格式,例如:

protected $casts = [
    'date' => 'date_format:d/m/yyyy',
];

编辑过

我试过这个:

在模型中:

protected $dateFormat = 'm/d/Y';

protected $dates = ['driver_expiration', 'created_at', 'updated_at', 'deleted_at'];

protected $casts = [
    'driver_expiration'     => 'date',
];

我将日期(驱动程序到期)保存为“01/012016”,但日期保存为0000-00-00。

laravel文件:https://laravel.com/docs/5.1/eloquent-mutators Tell us$dateFormat仅适用于时间戳(“创建时间”、“更新时间”、“删除时间”)

共有3个答案

米项禹
2023-03-14

只需添加到模型中:

protected function asDateTime($value)
{
    return parent::asDateTime($value)->format('d/m/y');
}

这个Eloquent的方法最初返回一个Carbon实例,因此您可以获取该实例并调用其format()方法。如果您希望将此解决方案应用于所有模型,只需创建一个从Eloquent扩展的新类,并将此方法放在那里,这样您就可以从这个新类扩展模型。

傅宏恺
2023-03-14

您可以使用mutators设置您喜欢的格式,而不是强制转换日期格式:

例如,如果您的列被称为date,您可以将以下函数添加到您的模型中:

public function setDateAttribute( $value ) {
  $this->attributes['date'] = (new Carbon($value))->format('d/m/y');
}

使用CamelCase,设置属性的格式始终为。$this中的date-

当您数据库中创建更新记录时,上述功能将自动更改格式。

注意:您可能需要在模型顶部添加use Carbon\Carbon语句才能使用Carbon库。

看看这里的其他例子。

使现代化

或者,您可以使用以下方法为date列定义格式:

protected $dateFormat = 'Y-m-d';

司寇阳朔
2023-03-14

在拉威尔5.6之后,

您可以单独自定义雄辩日期和日期时间铸造的格式:

protected $casts = [
    'birthday'  => 'date:Y-m-d',
    'joined_at' => 'datetime:Y-m-d H:00',
];

将模型序列化为数组或JSON数据时使用此格式

 类似资料:
  • 在数据库中,在创建的字段中,我有值“2020-10-04 20:46:14”。在型号“Entry”中,我有以下代码 在前面的应用程序我得到价值"04.10.2020 18:46"。在配置/app.php我有时区配置'时区'= 有人知道问题出在哪里吗?为什么要改变时间?

  • 问题内容: 如果我尝试声明属性,如下所示: …它不起作用,因为它不被视为“属性”,而仅仅是模型类的一个属性。不仅如此,而且我也禁止访问实际存在的“数量”属性。 那我该怎么办? 问题答案: 这就是我现在正在做的: 我将其建议为PR,因此我们无需在每个Model上都声明此构造函数,并且只需在模型中声明数组即可轻松应用… 更新 : 正如cmfolio指出的那样, 实际的ANSWER非常简单 : 只需覆盖

  • 我想在PHPUnit测试中使用模拟对象(mockry)。模拟对象需要同时设置一些公共方法和一些公共属性。这门课是拉威尔雄辩的典范。我试过这个: ... 但是设置公共属性会返回以下错误: BadMethodCallException:此模拟对象上不存在方法Mockery_0_User::setAttribute() 在模拟简单类时不返回此错误,但在尝试模拟雄辩模型时返回此错误。我做错了什么?

  • 我正在尝试格式化中的日期时间值,以使其与格式匹配,我收到以下错误: 找不到分离符号找到了意外数据。发现意外数据。跟踪数据 Im在我的模型中使用自定义格式: 它对创建方法控制器很有效,没有问题,当尝试更新时出错,我认为与值如何存储在数据库中有关。 使用修补程序,我在模型中检索updated_at的值,并以下一种格式显示: 因此,当Im更新此值时,使用的格式为: 我认为它应该是类似于但是不起作用,我如

  • 问题内容: 我有如下代码所示的变量。 使用python,如何将其转换为以下格式? 问题答案: import datetime >>> d = datetime.datetime.strptime(‘2011-06-09’, ‘%Y-%m-%d’) >>> d.strftime(‘%b %d,%Y’) ‘Jun 09,2011’ 在2.5版之前的Python中,您可以使用替换为,(这样(未测试)):

  • 在下面的示例中,我们正在尝试将“日期”从一种格式转换为其他格式,例如要转换为UTC格式,例如2021-07-26T18:37:15.490Z 有人能帮忙吗。 输入XML: 现有输出: XSLT代码: 参考URL:https://xsltfiddle.liberty-development.net/pNEj9dB/1