2016-06-24 9 views
0

私はphpとlaravelの新機能で、MariaDB 10.1.xxでlaravel 5.2を使用しています。Laravel 5 select節のCarbonを使用して日付関連の列を変換する方法は?

テストテーブルにはインデックスと日付(yyyymmdd)の列があります。

私は、select句で生のクエリを使用せずにyyyymmddからyyyymmに日付形式を変換したいと思います。

は、私は次のようにそれを試してみました:

$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. 

私が炭素ではない生のクエリを使用してこの問題を解決するための任意のアイデアを持って聞かせてください。お使いのモデルで

答えて

0

Test)が保護されたフィールド$dates追加:

class Test { 
    //... 
    protected $dates = ['created_at', 'updated_at', 'date']; 
    //... 
} 

をこれは、フィールドdate(およびデフォルトのタイムスタンプフィールド)は、日付が含まれていることを雄弁に伝えます。 $entity->dateにはTestのエンティティのCarbonインスタンスが含まれるようになりました。

class Test { 
    //... 
    public function getFormattedDateAttribute() { 
     return $this->attributes['date']->format('Ym'); 
    } 
    //... 
} 
echo $entity->formatted_date; 
0

その他のオプションは以下のようなモデルの何かにミューテーターを使用することです:あなたは($entity->date->format('Ym');

は、あなたも、あなたのためにこれを行うにはAccessorを書くことができ、日付をフォーマットするためにこれを使用することができます

public function getDateAttribute($value){ 
    return Carbon::createFromFormat('Y-m-d', $value)->toDateTimeString(); 

} 
、変更したり、

を必要と同じように操作することができ

関連する問題