Php 如何在Laravel中创建种子场景
Laravel提供了一个功能,允许您创建在第一次运行时启动应用程序所需的通用数据。种子通常由国家、成分、用户角色甚至默认用户的列表组成 编写测试时,还可以使用Faker等人创建临时数据集 这两个特性都非常好,非常适合使用 然而,有时我们需要对Laravel web应用程序运行手动测试,这些应用程序由几十个表和数百或数千行数据(甚至数十万行)组成。例如,如果我们想对web应用程序进行负载测试,我们需要生成所有这些数据(而不是使用实际的生产数据) 我想修改artisanPhp 如何在Laravel中创建种子场景,php,laravel,Php,Laravel,Laravel提供了一个功能,允许您创建在第一次运行时启动应用程序所需的通用数据。种子通常由国家、成分、用户角色甚至默认用户的列表组成 编写测试时,还可以使用Faker等人创建临时数据集 这两个特性都非常好,非常适合使用 然而,有时我们需要对Laravel web应用程序运行手动测试,这些应用程序由几十个表和数百或数千行数据(甚至数十万行)组成。例如,如果我们想对web应用程序进行负载测试,我们需要生成所有这些数据(而不是使用实际的生产数据) 我想修改artisanmigrate--seed命令
migrate--seed
命令,以包含--scenario=loadtesting
来告诉Laravel要使用哪些种子文件,或者能够在种子文件中设置一个标志,该标志表示如果('loadtesting'=$scenario){$rows=1000000;}
我查看了Illumb文件夹(好的,是Illumb的子文件夹)中的Seeder.php类,但是我没有看到任何中断种子创建流程的机会
我想知道是否有人可以在不覆盖Laravel文件的情况下详细说明实现上述功能所需的步骤(确切地说,是供应商提供的任何内容)。我怀疑,无论推荐什么解决方案,都可能发挥关键作用
提前谢谢。我可以告诉你我有时是怎么做的。
.env
和config
中的一个标志,用于设置要调用的播种机类
APP_DB_TESTING = 'scenario1';
然后在播种机中
公共函数运行()
{
$this->call(userstableeder::class);
$this->call(rolepermissiontableeeder::class);
如果(配置('app.scenario')=='scenario1')
{
$this->call(CategoriesTableSeeder::class);
$this->call(tagstableeder::class);
$this->call(ArticlesTableSeeder::class);
}
}
或者,您可以创建自定义artisan
命令来启动不同的播种机。例如,创建名为LoadArticles
的自定义命令并添加:
公共函数句柄()
{
DB::table('articles')->truncate();
$this->call('db:seed',['--class'=>'ArticlesTableSeeder']);
}
然后您可以针对不同的测试情况调用它这是完美的。在哪里添加
handle()
函数?@TedStresen Reuterhandle
是自定义artisan命令中的一种方法<代码>php artisan make:命令CustomTableSeeder。这样,您可以将其作为任何其他artisan命令使用/调用