iT邦幫忙

0

Laravel9 資料庫時間顯示問題

  • 分享至 

  • xImage

資料庫的date格式是年/月/日/時/分/秒
那laravel要怎麼設定成只抓年/月/日就好?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
柳丁柚
iT邦新手 1 級 ‧ 2022-07-19 11:22:12

在資料庫回傳時做資料處理?
SQL-CONVERT

aa4731073 iT邦新手 4 級 ‧ 2022-07-21 09:33:22 檢舉

請問一下,使用這個方法是直接改寫sql存date的格式,還是格式不會改變,只是顯示方式改變?

1

在laravel的話,其有基本的兩種做法

一種是在取得資料時,使用 Carbon 這個物件來協助轉換格式。
另外一種則是在ORM中設定cast格式協助處理。

一般如果是固定的模式。我會設定到 cast 上。
這樣我在使用ORM取資料時,不需要再做特別的轉換。

但是...如果是有機會雙向用法的話。我還是會在程式內,用 Carbon 來做轉換格式處理。

以上給你參考。

aa4731073 iT邦新手 4 級 ‧ 2022-07-21 09:30:07 檢舉
protected $casts = [
        'start_date_time__c' => 'date:Y-m-d',
        'end_date_time__c' => 'date:Y-m-d'
    ];

我在models/test.php下設定$casts,還是沒有達到效果誒,請問有哪裡設定錯誤嗎?

你取值的方式是如何的。
正常是

test::all()
或
test::get()

只要是ORM取值的方式,都可以正常自動轉換。
我自已是因為有搭配到unixTime的記錄方式。
所以我是自行做一個自定義的cast來處理的

protected $casts = [
        'setTIme' => LocalDateTime::class . ':Y-m-d H:i:s',
        'useTime' => LocalDateTime::class . ':Y-m-d H:i:s',
    ];

上面的 LocalDateTime 是我自已寫的自定義物件。

要不你將 date 改成 datetime 試試。

aa4731073 iT邦新手 4 級 ‧ 2022-07-29 15:22:53 檢舉
  • 我是用
test::all()
  • 我改datetime了,沒用
0
企鵝大叔
iT邦新手 5 級 ‧ 2022-09-07 11:36:17
  1. 透過原形sql語句指定回傳形式
  2. 透過 collect()->transform() 二次轉型
  3. 透過 Eloquent 寫定欄位讀取的特殊轉型

app/Models/Users.php

public function getCreateDateAttribute()
{
    return date('Y-m-d', $this->created_at);
}

app/Http/Controllers/UsersController.php


$user = Users::findOne($id);
$create_date = $user->CreateDate;

我要發表回答

立即登入回答