Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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 设置伪造者';s在全球范围内为Laravel';s工厂_Php_Laravel_Factory_Faker - Fatal编程技术网

Php 设置伪造者';s在全球范围内为Laravel';s工厂

Php 设置伪造者';s在全球范围内为Laravel';s工厂,php,laravel,factory,faker,Php,Laravel,Factory,Faker,我希望每次使用现有的Laravel(5.7)工厂生成相同的数据。我看到Faker有一个设置种子的选项-$Faker->seed(123),但必须将其添加到每个工厂。 我一直在寻找一种方法来做到这一点,但没有成功。$faker是在工厂类的构造函数中设置的,我想我可以扩展它并将seed方法添加到$faker。问题是这个类在helpers.php(第495行)中使用,它是供应商文件,不能修改。有没有一种方法可以覆盖Laravel中的那些helper函数?或者也许有一种更简单的方法,我没有看到。只有当你

我希望每次使用现有的Laravel(5.7)工厂生成相同的数据。我看到Faker有一个设置种子的选项-
$Faker->seed(123),但必须将其添加到每个工厂。

我一直在寻找一种方法来做到这一点,但没有成功。
$faker
是在工厂类的构造函数中设置的,我想我可以扩展它并将seed方法添加到
$faker
。问题是这个类在
helpers.php(第495行)
中使用,它是供应商文件,不能修改。有没有一种方法可以覆盖Laravel中的那些helper函数?或者也许有一种更简单的方法,我没有看到。

只有当你注意到你会一直得到一些重复的结果时,骗子才需要播种。如果没有,我认为甚至不需要设置seed本身,
\illumb\Database\elount\Factory
类有一个额外的静态构造函数,它允许您传入您自己的faker实例,然后正常加载您现有的工厂。您可以按如下方式使用它:

$faker = \Faker\Factory::create();
$faker->seed(1234);
$factory = \Illuminate\Database\Eloquent\Factory::construct($faker);

// Then use the factory as follows
$user = $factory->of(\App\User::class)->create();

如果您需要在整个测试库的多个位置使用种子工厂,我建议您将其绑定到
setUp()
方法中的容器。

如果您每次都想使用相同的种子工厂,为什么还要使用Faker?为什么不直接做
$foo->bar='whatever'?因为您不希望自己编写500次“whatever$x”,但仍然希望得到类似的结果,例如在测试环境中。