Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel中创建种子场景_Php_Laravel - Fatal编程技术网

Php 如何在Laravel中创建种子场景

Php 如何在Laravel中创建种子场景,php,laravel,Php,Laravel,Laravel提供了一个功能,允许您创建在第一次运行时启动应用程序所需的通用数据。种子通常由国家、成分、用户角色甚至默认用户的列表组成 编写测试时,还可以使用Faker等人创建临时数据集 这两个特性都非常好,非常适合使用 然而,有时我们需要对Laravel web应用程序运行手动测试,这些应用程序由几十个表和数百或数千行数据(甚至数十万行)组成。例如,如果我们想对web应用程序进行负载测试,我们需要生成所有这些数据(而不是使用实际的生产数据) 我想修改artisanmigrate--seed命令

Laravel提供了一个功能,允许您创建在第一次运行时启动应用程序所需的通用数据。种子通常由国家、成分、用户角色甚至默认用户的列表组成

编写测试时,还可以使用Faker等人创建临时数据集

这两个特性都非常好,非常适合使用

然而,有时我们需要对Laravel web应用程序运行手动测试,这些应用程序由几十个表和数百或数千行数据(甚至数十万行)组成。例如,如果我们想对web应用程序进行负载测试,我们需要生成所有这些数据(而不是使用实际的生产数据)

我想修改artisan
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 Reuter
handle
是自定义artisan命令中的一种方法<代码>php artisan make:命令CustomTableSeeder。这样,您可以将其作为任何其他artisan命令使用/调用