我正在运行一个处理一段时间内输入的用户数据的应用。为此,我需要更改用于为数据库设定种子的数据中的时间戳。我有一个很好的循环来做到这一点,但问题是,当我运行数据库播种时,没有任何反应。我想知道是否有一个Laravel特定的东西阻止了这个,如果有的话,如何解决它。
$record->created_at = $fakeCreateDate->format('Y-m-d H:i:s');
$record->save();
答案 0 :(得分:2)
Carbon::now()
方法可以为您提供帮助。
在您的示例中,它应该与
一起使用$record->created_at = \Carbon\Carbon::now()
$record->save()
如果您需要使用DB::table
进行插入,例如更新日期,则需要使用正确的方法来创建日期。
假设您有一张只有things
和id
的表timestamps
,就像这个架构一样
$table->increments('id');
$table->timestamps();
日期更新的一个例子是:
DB::table('things')->insert(['created_at' => \Carbon\Carbon::now()]);
答案 1 :(得分:1)
是的,created_at和updated_at是“特殊的”。 Laravel在创建时设置created_at的时间戳,在更新时设置updated_at的时间戳。
http://laravel.com/docs/eloquent#timestamps
您可以在模型中执行此操作来关闭它们
public $timestamps = false;
默认情况下,Eloquent会自动维护数据库表中的created_at和updated_at列。只需添加这些 时间戳列到你的表和Eloquent将照顾 休息。如果您不希望Eloquent维护这些列,请添加 以下属性为您的模型
定义模型后,您就可以开始检索和了 在表中创建记录。请注意,您需要放置 默认情况下,表上的updated_at和created_at列。如果你这样做 不希望自动维护这些列,设置 模型上的$ timestamps属性为false。