Php Laravel刀片不遵守日期强制转换格式

Php Laravel刀片不遵守日期强制转换格式,php,laravel,laravel-blade,Php,Laravel,Laravel Blade,我在用户表中有一个出生日期字段 $table->date('dob'); 用户模型具有强制转换 protected $casts = [ 'dob' => 'date:d-m-Y' ]; 在刀刃上 {{$user->dob}} 我期待着2019年11月26日 但发现它显示2019-11-26 00:00:00 为什么显示时需要在blade中重新格式化日期 我错过了什么? 或者我所期望的不是格式化的目的?protected$casts=[…]告诉La

我在用户表中有一个出生日期字段

$table->date('dob');
用户模型具有强制转换

protected $casts = [
        'dob' => 'date:d-m-Y'
    ];
在刀刃上

{{$user->dob}}
我期待着2019年11月26日 但发现它显示2019-11-26 00:00:00

为什么显示时需要在blade中重新格式化日期

我错过了什么?
或者我所期望的不是格式化的目的?

protected$casts=[…]
告诉Laravel将属性视为
Carbon
实例,但您仍然需要格式化它们:

{{ $user->dob->format('d-m-Y') }}
据我所知,没有一种方法可以输出默认格式,除非您使用
访问器

在您的
User.php
模型中:

public function getDobFormattedAttribute(){
  return $this->dob->format('y-m-D');
}
那么在你看来,

{{ $user->dob_formatted }}

日期转换仅用于数组或JSON,如下所述:

您可以尝试通过mutator执行此操作:

protected$dates=[
‘dob’,//它将是‘Y-m-dh:i:s’
];
受保护的$dateFormat='d-m-Y';//但你可以重新定义它

仅当您使用
->toArray()
->toJson()
对所讨论的对象或集合(从此处的文档中)执行此操作时才有效

如果没有使用上述任何函数调用,可以在模型中创建一个访问器或getter方法

    use Carbon\Carbon; // import the Carbon lib.


    protected $dates = ['dob'];

    public function getDobAttribute($value)
    {
        return Carbon::createFromFormat('d-m-Y', $value);
    }

谢谢你的快速回复。因此,强制转换格式仅适用于数组或JSON。首先我使用$casts=['dob'=>'date'];但是它没有通过assertDatabaseHas测试。需要查看您的解决方案是否通过测试…这也会影响在处创建的
和在
处更新的
是否存在。如果在
处创建影响,则会导致问题。所以这不是解决这个问题的好方法。谢谢。。。但是我在寻找一些东西,这样我就不需要写这些。。。