[英]Laravel 5 How to convert date related column using Carbon in select clause?
我是php和laravel的新手,並在MariaDB 10.1.xx中使用laravel 5.2。
測試表具有索引和日期(yyyymmdd)列。
我想將日期格式從yyyymmdd轉換為YYYYmm,而無需在select子句中使用原始查詢。
我嘗試如下:
$test = DB::table('test')
->select( 'idx',Carbon::parse('date')->format('Ym') );
並得到如下錯誤:
DateTime::__construct(): Failed to parse time string (date) at position 0 (n): The timezone could not be found in the database.
請讓我有任何想法來解決這個問題,而不是使用無碳查詢。
在模型( Test
)中,添加受保護的字段$dates
:
class Test {
//...
protected $dates = ['created_at', 'updated_at', 'date'];
//...
}
這告訴Eloquent字段date
(和默認的timestamp-fields)包含一個日期。 $entity->date
現在將包含類型為Test
的實體的Carbon
實例。 您可以使用它來格式化日期( $entity->date->format('Ym');
)
你甚至可以寫一個訪問器為你這樣做:
class Test {
//...
public function getFormattedDateAttribute() {
return $this->attributes['date']->format('Ym');
}
//...
}
echo $entity->formatted_date;
另一種選擇是在模型中使用變體,例如
public function getDateAttribute($value){
return Carbon::createFromFormat('Y-m-d', $value)->toDateTimeString();
}
您可以根據需要進行更改或使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.