2015-11-27 60 views
0

我做了一些搜索周圍的方式來格式化顯示在我的視圖上的日期。我發現如果將該字段插入模型下的受保護的$ dates數組中,我可以根據需要操作日期。但是現在,當我想要一個新的插入到數據庫中,我得到

Unexpected Date Format 

以下是我在我的模型:

protected $fillable = ['name', 'description', 'address','caption', 'video', 'visibility', 'image', 'publish_at', 'link']; 

protected $dates = ['publish_at']; 

裏面我的觀點:

<p class = "day"> 
     {{$event->publish_at->format('d')}} 
    </p> 


    <p class = "month"> 
     {{$event->publish_at->format('M')}} 
    </p> 

我在保存之前再次嘗試格式化日期:

$date = new ElephantCalender(array(
     'name' => $request->get('name'), 
     'description' => $request->get('description'), 
     'caption' => $request->get('caption'), 
     'address' => $request->get('address'), 
     'link' => $request->get('link'), 
     'visibility' => $request->get('visibility'), 
     'publish_at' => $request->get('publish_at')->format('yyyy-mm-dd') 
    )); 

    $date->save(); 

這告訴我,我不能在一個字符串上使用format()。是否有另一種方法可以將日期提交到表格提交正確的格式?

+1

我認爲Eloquent會將碳對象轉換爲正確的日期格式,所以也許你可以''publish_at'=>新的碳($ request-> get('publish_at'))' – Rudie

+0

這工作得很好。非常感謝@Rudie ..你可以把這個答案放在一個答案中,讓我可以upvote它嗎? –

回答

1

Eloquent使用Carbon來創建日期對象。它還可以使用Carbon將日期對象按照配置的日期格式存儲到數據庫中。

這應該工作:

'publish_at' => new Carbon($request->get('publish_at')) 

的輸入格式是非常重要的。像這樣,您可以讓Carbon或PHP決定如何解析輸入日期字符串。某些日期格式不明確:2015年7月11日可能意味着7月11日或11月7日。要絕對確定,可以使用DateTime::createFromFormat,如@volkinc所示。在任何一種情況下,最終的對象都將通過Eloquent進行格式化。

0

我不知道從GET(..)

使用

$tempT = DateTime::createFromFormat('m-d-Y', '10-16-2003')->format('Y-m-d'); 

或類似

$d = new DateTime('10-16-2003'); 

$timestamp = $d->getTimestamp(); // Unix timestamp 
$tempT = $d->format('Y-m-d'); // 2003-10-16 

正如你可以在查詢中使用$誘惑格式化日期