更新Created_at时间戳Laravel db种子

时间:2014-07-23 06:51:14

标签: php laravel laravel-4

我正在运行一个处理一段时间内输入的用户数据的应用。为此,我需要更改用于为数据库设定种子的数据中的时间戳。我有一个很好的循环来做到这一点,但问题是,当我运行数据库播种时,没有任何反应。我想知道是否有一个Laravel特定的东西阻止了这个,如果有的话,如何解决它。

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

2 个答案:

答案 0 :(得分:2)

Carbon::now()方法可以为您提供帮助。

在您的示例中,它应该与

一起使用
$record->created_at = \Carbon\Carbon::now()
$record->save()

如果您需要使用DB::table进行插入,例如更新日期,则需要使用正确的方法来创建日期。

假设您有一张只有thingsid的表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。