2013-10-04 23 views
9

根據文檔,Laravel自動將created_atupdated_at(來自Eloquent模型)傳遞到新的Carbon實例。如何處理Laravel中的未設置/默認日期? (使用Carbon)

看來雖然,如果該值是默認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模型中,必須這樣做纔會覺得笨拙」。你可以把它放在擴展Model的BaseModel中,並讓所有的模型擴展BaseModel。 –

回答

2

似乎沒有乾淨的方法來做到這一點。所以我去了:

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

這是發生在getAttributeValue方法,在model.php

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

因爲它是被傳遞給asDateTime方法。 這可能是固定的東西,如

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

@MAuro好的一點,我最終在我的原始問題中尋求解決方案。所以我會將其作爲答案張貼並標記爲已接受 – Chris

相關問題