2017-03-07 69 views
1

所以我对语言表(LanguageTableSeeder)播种机如下:在空时间戳Laravel播种结果

DB::table('languages')->insert([ 
    'name'  => 'English', 
    'flag'  => '', 
    'abbr'  => 'en', 
    'script' => 'Latn', 
    'native' => 'English', 
    'active' => '1', 
    'default' => '1', 
]); 

    $this->command->info('Language seeding successful.'); 

,但是这导致created_atupdated_at领域在数据库空。我抬起头,前置运UsersTabeSeeder和改变了我的LanguageTableSeeder马赫完全一样的格式:

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_atupdated_at字段被设置在运行播种机的确切时间。

所以这是我的问题。这是为什么发生?是否有必要使用:

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

播种时获得填充时间戳吗?

回答

1

自动时间戳储蓄只适用于雄辩功能,因此您需要手动执行类似下面的非雄辩功能

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') 

]); 

或做它雄辩地(就像你在汽车已经看到生成的种子像UserTableSeeder )

$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 for datetime和timestamp列。默认情况下,它将为created_at,updated_at和deleted_at列提供Carbon。您可以在扩展Eloquent \ Model的模型中对其进行自定义。

Carbon\Carbon extends \DateTime,所以不会因为使用Carbon而损失功能,而是支持DateTime,只有更多的好处/灵活性。

+0

感谢您的回复。为什么我应该使用'Carbon'包而不是php的'date'函数?为什么'UsersTableSeeder'设置时间戳而不使用上面提到的任何方法? – Jhivan

+0

可能是你的用户表在$ seed = new User(); $ user-> name ='Super Admin'; $ user-> email ='[email protected]'; $ user-> save(); – sumit

+0

看到我编辑的答案,希望你现在清楚 – sumit