gpt4 book ai didi

Laravel 播种结果为空时间戳

转载 作者:行者123 更新时间:2023-12-02 04:09:14 33 4
gpt4 key购买 nike

所以我有一个语言表播种器(LanguageTableSeeder),如下所示:

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 字段为 Null。我查找了预装的 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 字段为 Null,这很奇怪,因为当我在数据库中查找用户表时,它们有 created_atupdated_at 字段在运行播种器的确切时间设置。

这是我的问题。为什么会发生这种情况?是否有必要使用:

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

播种时获取填充时间戳?

最佳答案

Auto timestamp saving is only for Eloquent feature so you need to do manually like below for non eloquent feature

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

]);

或者 Eloquent 地做到这一点(就像您在 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。默认情况下,它将为created_at、updated_at 和deleted_at 列提供Carbon。您可以在扩展 Eloquent\Model 的模型中对此进行自定义。

Carbon\Carbon 扩展了\DateTime,因此使用 Carbon 代替 DateTime 不会损失功能,只会带来更多好处/灵 active 。

关于Laravel 播种结果为空时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639976/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com