0000-00-00 00:00:00在时间戳

时间:2013-11-29 08:11:14

标签: php laravel-4

我试图在我的项目中播种数据库。当我这样做时,只插入'title'和'post'字段,'Created_at'和'updated_at'不会被更改并显示为0000-00-00 00:00:00。我也尝试过time()。它在“php artisan tink”中正常工作,但数据库中仍未更改任何结果。

<?php

class QuestionsTableSeeder extends Seeder {

    public function run()
    {

        DB::table('questions')->truncate();

        $questions = array(
            'title' => 'Simple Question Title',
            'post' => 'Lorem ipsum dolor',
            'created_at' => time()
        );

        // Uncomment the below to run the seeder
         DB::table('questions')->insert($questions);
    }

}

5 个答案:

答案 0 :(得分:4)

使用

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

time()返回的值格式化为mySql时间戳

答案 1 :(得分:3)

您可以使用new DateTime()! 希望这个&#39; ll hep

答案 2 :(得分:1)

更新并插入许多用户面临的数据库问题中的新时间戳,他们希望插入日期并更新记录。有很多方法可以做到这一点,但我喜欢数据库本身的方式。正如在MySQL中将表改为

 ALTER TABLE `talbename` 
   ADD `updatedon` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
   NOT NULL DEFAULT CURRENT_TIMESTAMP ;

这将在数据库中创建新列,每次更新或插入记录时,都会记录时间戳。不,需要用PHP做事。

答案 3 :(得分:0)

OO方式(使用DateTime)

$now = new DateTime();

$questions = array(
            'title' => 'Simple Question Title',
            'post' => 'Lorem ipsum dolor',
            'created_at' => $now->format('Y-m-d H:i:s'),
        );

答案 4 :(得分:0)

Eloquent也会自动处理时间戳。代码如下;

public function run()
    {
        DB::table('questions')->truncate();

        Question::create(array(
            'title' => 'Sample Question Title',
            'post' => 'Lorem ipsum dollar'
        ));

    }