Php 如何在Controller Laravel 7中从数据库更改日期格式

Php 如何在Controller Laravel 7中从数据库更改日期格式,php,laravel,laravel-7,Php,Laravel,Laravel 7,我试图在数据库中显示数据,数据库中的日期格式类似于2020-10-11T17:22:29.000000Z”,我如何将其更改为2020-10-11或2020年12月11日 这是我的控制器 public function get_all_artikel(){ $data = ArtikelKonten::select( 'artikel_kategori.nama as kategori','artikel_konten.*')

我试图在数据库中显示数据,数据库中的日期格式类似于2020-10-11T17:22:29.000000Z”,我如何将其更改为2020-10-11或2020年12月11日

这是我的控制器

 public function get_all_artikel(){
        $data = ArtikelKonten::select(
                'artikel_kategori.nama as kategori','artikel_konten.*')
                ->join('artikel_kategori','artikel_kategori.id','artikel_konten.id_kategori')
                ->get();
        if ($data){
         return response()->json([
                'status' => true,
                'artikel' => $data,
         ],200);}
         else{
             return response()->json([
                'status' => false,
                'message' => 'No Artikel were found'
         ],404);}
        }
这是我的模型

class ArtikelKonten extends Model
{
    
    protected $table = 'artikel_konten';
    protected $fillable = ['id_kategori', 'gambar', 'tag_program', 'nm_program', 'judul', 'preview', 'konten'];
    
    const CREATED_AT = 'created';
    const UPDATED_AT = 'modified';
}

这就是结果

{
    "status": true,
    "artikel": [
        {
            "kategori": "Program",
            "id": 4,
            "id_kategori": "2",
            "tag_program": "2",
            "nm_program": "Zakat Mall",
            "gambar": "http://127.0.0.1:8000/storage/photos/1/article1.png",
            "judul": "Mengenalkan Zakat Kepada Anak",
            "preview": null,
            "konten": null,
            "created": "2020-12-10T07:24:50.000000Z",
            "modified": "2020-12-10T08:06:07.000000Z"
        },
        {
            "kategori": "Berita",
            "id": 10,
            "id_kategori": "1",
            "tag_program": "4",
            "nm_program": "Jumat Barokah",
            "gambar": "http://127.0.0.1:8000/storage/photos/1/article2.png",
            "judul": "Suplemen Iman Ditengah Pandemi",
            "preview": null,
            "konten": null,
            "created": "2020-12-11T20:44:25.000000Z",
            "modified": "2020-12-11T20:44:25.000000Z"
        },
        {
            "kategori": "Program",
            "id": 11,
            "id_kategori": "2",
            "tag_program": "2",
            "nm_program": "Zakat Mall",
            "gambar": "http://127.0.0.1:8000/storage/photos/1/article3.png",
            "judul": "Menumbuhkan Semangat Berzakat Umat",
            "preview": null,
            "konten": null,
            "created": "2020-12-11T20:46:23.000000Z",
            "modified": "2020-12-11T20:46:23.000000Z"
        }
    ]
}
我只是想把“created”:“2020-12-11T20:46:23.000000Z”改为“create”:“2020-12-11”,谢谢你们的回答伙计们:)

使用
date()
获得清晰的日期和时间格式

date('d-m-Y', strtotime($value->created));

Eloquent模型有一个名为
cast
的属性,用于将查询的输出转换为所需的格式,在您的情况下,只需转换日期列,如下所示:


Laravel允许指定datetime字段序列化为array或json时应转换的格式

在模型上定义$casts属性


受保护的$casts=[
'在'=>'日期时间:Y-m-d'创建',
'在'=>'日期时间:Y-m-d'更新',
];

阅读更多信息:

Laravel 7在雄辩的模型上使用toArraytoJson方法时,使用新的日期序列化格式

如果要继续使用以前的行为,可以覆盖模型上的
serializeDate()
方法:

use DateTimeInterface;

protected function serializeDate(DateTimeInterface $date)
{
    return $date->format('Y-m-d');
}
参见官方升级文档[7.x]

第一条路

只需添加到模型中:

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

您可以单独自定义Elount date和date Time的格式:

protected $casts = [
'created_at'  => 'date:Y-m-d',
'updated_at' =>  'datetime:Y-m-d H:00',];
一些帮助我回答问题的链接

一些帮助我回答问题的链接


您可以使用create_at的访问器,并将此代码放入您的模型中:

    public function getCreatedAtAttribute($date)
{
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d');
}
PHP Laravel框架 拉维尔框架 : 8.42.1 测试日期 : 2021年5月22日 PHP版本 : 7.3.8 数据库 : MariaDB 10.5.8 操作系统 : MacOS 10.13.6塞拉利昂高地
    public function getCreatedAtAttribute($date)
{
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d');
}