2017-03-07 2 views
1

だから私は、言語表(LanguageTableSeeder)のためのシーダを持っていました。私は見上げ事前にUsersTabeSeederを出荷し、まったく同じ形式マッハために私LanguageTableSeederを変更:私は私のデータにユーザー表を見上げるとき、これはまた、奇数であるヌルであることをcreated_atupdated_at分野が生じたLaravel播種結果は

DB::table('languages')->delete(); 

$languages = [ 
    [ 
     'name' => 'English', 
     'flag' => '', 
     'abbr' => 'en', 
     'script' => 'Latn', 
     'native' => 'English', 
     'active' => '1', 
     'default' => '1', 
    ], 
]; 

foreach ($languages as $language){ 
    Language::create($language); 
} 

を彼らはcreated_atupdated_atのフィールドを、シーダーの実行時に正確に設定する必要があります。

ここに私の質問があります。なぜこうなった?

'created_at' => date("Y-m-d H:i:s"), 
'updated_at' => date("Y-m-d H:i:s"), 

播種時のタイムスタンプを取得するには?

答えて

1
あなたはUserTableSeederのような種を生成し、自動で見てきたようにあなたが(非雄弁機能

DB::table('languages')->insert([ 
    'name'  => 'English', 
    'flag'  => '', 
    'abbr'  => 'en', 
    'script' => 'Latn', 
    'native' => 'English', 
    'active' => '1', 
    'default' => '1', 
    'created_at' => Carbon::now()->format('Y-m-d H:i:s'), 
    'updated_at' => Carbon::now()->format('Y-m-d H:i:s') 

]); 

については、以下のように手動で行う必要があるOR雄弁にそれを行うよう

オートタイムスタンプの節約が雄弁機能のためだけです)

$language = new Language(); 
    $language ->name = 'English'; 
    $language->flag' = '', 
    $language ->abbr = 'en', 
    $language->script ='Latn', 
    $language->native ='English', 
    $language->active ='1', 
    $language->default ='1', 
    $language->save(); 

なぜ炭素を使用するのですか? Eloquentは、日時とタイムスタンプの列にCarbonを提供します。デフォルトでは、created_at、updated_at、およびdeleted_atの列に対してCarbonが提供されます。 Eloquent \ Modelを拡張したモデルでこれをカスタマイズできます。

Carbon\Carbon extends \DateTimeのように、CarbonをDateTimeの方に使用することで機能の損失はなく、より多くの利点/柔軟性が得られます。

+0

返信いただきありがとうございます。なぜ私はPHPの 'date'関数の代わりに' Carbon'パッケージを使うべきですか?上記の方法を使用せずに 'UsersTableSeeder'がタイムスタンプを設定するのはなぜですか? – Jhivan

+0

あなたのユーザテーブルは、$ user = new User();のようなシード上で雄弁に保存されるかもしれません。 $ user-> name = 'スーパー管理者'; $ user-> email = '[email protected]'; $ user-> save(); – sumit

+0

私の編集された答えを見て、あなたが今はっきりしていることを願って – sumit

関連する問題