在資料庫回傳時做資料處理?
SQL-CONVERT
在laravel的話,其有基本的兩種做法
一種是在取得資料時,使用 Carbon 這個物件來協助轉換格式。
另外一種則是在ORM中設定cast格式協助處理。
一般如果是固定的模式。我會設定到 cast 上。
這樣我在使用ORM取資料時,不需要再做特別的轉換。
但是...如果是有機會雙向用法的話。我還是會在程式內,用 Carbon 來做轉換格式處理。
以上給你參考。
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 試試。
test::all()
collect()->transform()
二次轉型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;