2013-10-04 10 views
9

Laravelは自動的にマニュアルに従って、新しいカーボンインスタンスにcreated_atupdated_at(雄弁モデルから)を通過します。Laravelで未設定/デフォルトの日付を処理する方法は? (炭素と)

値がデフォルトの0000-00-00 00:00:00の場合、次のように出力されます。 -0001-11-30 06:12:32すべて0000-00-00 00:00:00の値です。

フィールドはタイムスタンプタイプに設定されています。私が使用している

(モデル内)現時点では、以下が、それはデフォルト/未設定の日付が含まれている可能性のあるすべてのLaravelモデル全体でこれを実行する必要が不器用な感じ。

public function getCreatedAtAttribute($value) { 
    return $value == "0000-00-00 00:00:00" ? "0000-00-00 00:00:00" : $value; 
} 
+0

"デフォルト/設定されていない日付が含まれているかもしれないすべてのLaravelモデルでこれを行う必要があるのは不思議です。"モデルを拡張するBaseModelに配置し、すべてのモデルをBaseModelに拡張することができます。 –

答えて

2

これを行うにはクリーンな方法がないようです。だから私は一緒に行った:

public function getCreatedAtAttribute($value) { 
    return $value == "0000-00-00 00:00:00" ? "0000-00-00 00:00:00" : $value; 
} 
2

がasDateTimeメソッドに渡されるように、これはmodel.php

elseif (in_array($key, $this->getDates())) 
    { 
     if ($value) return $this->asDateTime($value); 
    } 

に、getAttributeValue方法で起こっています。 これはプルリクエストの問題だろうか?これは

elseif (in_array($key, $this->getDates())) 
    { 
     if ($value && $value !== '0000-00-00 00:00:00') return $this->asDateTime($value); 
    } 

のようなもので固定することができ

+0

あなたの答えは本当に理解できませんが、正しいとマークされています。 Laravel 4にはこのための良い方法がないと言っていますか?@ Chrisのソリューションが唯一利用可能ですか? – Mauro

+0

@MARO良い点、私は私の元の質問の解決に行きました。だから私はそれを答えとして掲示し、それを受け入れてマークする – Chris

関連する問題