2015-08-26 45 views
6

我有一個MySQL數據庫中的時間戳變量列。嘗試將碳時間戳轉換爲我可以在其中輸入的內容,但Carbon::now()僅返回Carbon對象,而當我嘗試使用Carbon對象的時間戳字符串時,它不會在mysql中註冊。將碳日期轉換爲mysql時間戳。

public function store(CreateArticleRequest $request){ 
     $input = $request->all(); 
     var_dump($input); // JUST SO YOU CAN SEE 
     $input['published_at'] = Carbon::now(); 
     var_dump($input); // JUST SO YOU CAN SEE 
     Article::create($input); 
} 

我的第一個變種轉儲,像這樣:

array (size=4) 
    '_token' => string 'Wy67a4hWxrnfiGz61wmXfYCSjAdldv26wOJiLWNc' (length=40) 
    'title' => string 'ASDFasdf' (length=8) 
    'body' => string 'asdfasdf' (length=8) 
    'published_at' => string '2015-08-26' (length=10) 

我的第二個變種轉儲是像這樣。

有關「published_at」的mysql列是一個時間戳變量。我想如何將其從碳對象中轉換出來?

在此先感謝。

+0

在日期使用'strtotime'。 – mdamia

回答

-4

您還可以設置賦值函數的模型。

public function setPublishedAt($value) 
{ 
    $this->attributes['published_at'] = strtotime($value); 
} 

轉換爲時間戳

$model -> setPublishedAt('2015-08-26'); // 1440572400 

或者你可以轉換日期使用strtotime

的strtotime來標記 - 解析任何英文文本的日期時間描述爲Unix時間戳

希望得到這個幫助。

+0

這不是一個MySQL時間戳,這是一個UNIX時間戳 – AndrewMcLagan

3

的問題是在你的日期字符串,例如,你有這樣的:

public function setCrbDateAttribute($value) 
{ 
    $this->attributes['crb_date'] = \Carbon\Carbon::createFromFormat('d-m-Y h:i', $value); 
} 

現在,如果有喜歡的二○一四年十月一十二日一個日期,那麼會發生這種錯誤,因爲時針和分針是失蹤。所以你要確保日期包含所有的語句,並且確保日期字符串包含 - 作爲分隔符而不是/。

換句話說,在使用Carbon之前檢查$值,並確保您的日期字符串包含您在該方法中使用的格式完全相同的字符串。

這也發生在存取方法,所以檢查的日期值,你用它在Carbon::createFromFormat().

第一之前,如果您收到來自用戶輸入的日期,然後使用它使用日期或DATE_FORMAT之前驗證日期:格式規則,在這裏檢查驗證。

答裁判:

Laravel/Carbon Timestamp 0000-00-00 00:00:00 or Unexpected data found. Unexpected data found. Data missing