所以我正在使用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
方法吗?