2014-07-23 109 views
2

我正在運行一個應用程序,用於處理在一段時間內輸入的用戶數據。爲此,我需要更改數據庫中用於播種數據的時間戳。我有一個很好的循環來做到這一點,但問題是,當我運行數據庫播種時,沒有任何反應。我想知道是否有Laravel具體的東西來阻止這種情況發生,如果有的話,如何解決這個問題。更新Created_at時間戳Laravel db播種

  $record->created_at = $fakeCreateDate->format('Y-m-d H:i:s'); 
      $record->save(); 

回答

1

是的,created_at和updated_at是「特殊的」。 Laravel在創建時設置created_at的時間戳,並在更新時設置updated_at。

http://laravel.com/docs/eloquent#timestamps

你可以這樣做你的模型

public $timestamps = false; 

默認情況下,內部將其關閉,雄辯會自動保持在數據庫表中的created_at和updated_at字段。只需將這些 時間戳列添加到您的表中,Eloquent將處理 休息。如果您不希望雄辯維持這些列,添加 以下屬性到模型

一旦模型定義,你就可以開始檢索和 在表格製作記錄。請注意,默認情況下,您需要將 updated_at和created_at列置於表格中。如果您確實想要自動維護這些列,請將 $ timestamps屬性設置爲false。

+0

輝煌!我只是將一行代碼添加到我的模型中,並且仍然在我的遷移構建器中留下了'$ table-> timestamps();',它的工作原理與它應該的一樣。 – user3413723

1

Carbon::now()方法可以幫助你在這裏。

在您的例子,它應該

$record->created_at = \Carbon\Carbon::now() 
$record->save() 

工作,如果你需要做的將插入件與DB::table,例如更新日期,你需要使用正確的方法來創建日期。

假設你有一個表things只有idtimestamps這樣架構的日期更新

$table->increments('id'); 
$table->timestamps(); 

一個例子是:

DB::table('things')->insert(['created_at' => \Carbon\Carbon::now()]);