Laravel 7 更改數據查詢後的時間戳 toarray如何修改時間格式

laravel7 的更改時間格式和以前不太一樣了

如果不重新格式化時間,結果是這樣的

$list = $this->orderBy('addtime','desc')->where('status',0)->get();

var_dump($list->toArray());

{
  "status": 0,
  "data": [
    {
      "id": 1,
      "title": "這是第一個標題",
      "description": "這是第一個標題",
      "addtime": "2020-06-12T03:18:28.000000Z",
      "updatetime": "2020-06-12T03:18:28.000000Z"
    }
  ]
}

可以看到,addtime 和updatetime都是 一種laravel7 默認的時間格式化方式,在此不得不吐槽下,laravel蛇精病呀,管的真寬,老子想格式化啥樣就啥樣,稀罕你這麼格式化了?

自定義格式化

方法一:

重寫並覆蓋 serializeDate 方法 (有個麻煩的地方,6.x版本及之前,不是這樣,laravel 7版本每個類都要寫一份,因爲只對當前類有效)


// 引用格式化時間的命名空間
use DateTimeInterface;

// 在類裏面直接重新寫一個方法,覆蓋原有的格式化方法

class Question extends Model
{
    /**
        ........ 類裏面的其他代碼
    */
    /*
     * 時間格式化
     */
    protected function serializeDate(DateTimeInterface $date){
        return $date->format('Y-m-d');
    }
}
 

方法二:

類裏面定義 $casts 變量 ,效果和上面的那個差不多(同樣,只對當前類有效)

protected $casts = [
    'updatetime' => 'datetime:Y-m-d H:i:s',
    'addtime' => 'datetime:Y-m-d H:i:s',
];

 

剩下的就是手動重新把時間通過 strtotime 給還原爲時間戳,然後自定義格式化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章