Laravel模型工厂使用created_at和updated_at制作方法

时间:2016-03-18 09:13:36

标签: php laravel laravel-5 laravel-seeding

所以我正在使用laravel种子并且遇到了关于如何加速它们的这篇惊人的文章。

http://bensmith.io/speeding-up-laravel-seeders

我已经测试了这种方法,是的,我种子的种子时间减少了一半。

我所面临的唯一问题是工厂的make()方法没有生成时间戳,我的一些测试现在开始抱怨。

有没有一种方法可以强制工厂的make()方法为我做这个方法,而不是修改我的所有种子以使它们手动设置种子时间戳?

示例种子

<?php

use Illuminate\Database\Seeder;

use Uppdragshuset\AO\Tenant\Models\CommentType;
use Uppdragshuset\AO\Tenant\Models\User;
use Uppdragshuset\AO\Tenant\Models\Document;
use Uppdragshuset\AO\Tenant\Models\Comment;

use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Output\ConsoleOutput;

class CommentTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $output = new ConsoleOutput;
        $bar = new ProgressBar($output);
        $this->command->info("Seeding Orders");
        $bar->setFormat('verbose');
        $bar->start();

        $comment_types = CommentType::all(['id']);
        $users = User::all(['id']);
        $documents = Document::all(['id']);

        $comments = [];

        for($i = 0; $i < 50; $i++){
            $bar->advance();
            $comments[] = factory(Comment::class)->make([
                'comment_type_id' => $comment_types->shuffle()->first()->id,
                'user_id' => $users->shuffle()->first()->id,
                'commentable_id' => $documents->shuffle()->first()->id,
            ])->toArray();
        }

        Comment::insert($comments);

        $bar->finish();
        $this->command->info("\n\r");
    }
}

所以我可以选择

'created_at' => Carbon\Carbon::now(),
'updated_at' => Carbon\Carbon::now(),

在种子和其他所有其他方面但是有更好的方法来覆盖make方法吗?

0 个答案:

没有答案