Php 如何从faker获得唯一值?
我想问一下,如何从骗子那里创造独特的价值 我知道这是一个熟悉的问题实际上,你可能会把一些重复的链接,例如,但不幸的是,这些链接没有回答我的问题Php 如何从faker获得唯一值?,php,laravel,faker,laravel-8,laravel-factory,Php,Laravel,Faker,Laravel 8,Laravel Factory,我想问一下,如何从骗子那里创造独特的价值 我知道这是一个熟悉的问题实际上,你可能会把一些重复的链接,例如,但不幸的是,这些链接没有回答我的问题 下面是我的代码。我尝试了unique(true),但结果相同 return [ 'user_id' => $this->faker->unique()->numberBetween(1, 10), //more code here ]; 下面是我得到的结果。正如你所看到的,有很多重复的“5”插入 工厂才是真正的
下面是我的代码。我尝试了
unique(true)
,但结果相同
return [
'user_id' => $this->faker->unique()->numberBetween(1, 10),
//more code here
];
下面是我得到的结果。正如你所看到的,有很多重复的“5”插入
工厂才是真正的问题,而不是造假者。我是说工厂的电话
例如,假设您有用户
和用户信息
模型,因为您在上面的问题中没有提到任何模型
我假设你像下面这样调用工厂,在工厂中,它逐个创建一个模型,直到10,这使得
unique()
的faker
无用
\App\Models\User_Information::factory()->create(10);
我的解决方案是使用循环使唯一()
起作用
$max = 10;
for($c=1; $c<=$max; $c++) {
\App\Models\User_Information::factory()->create();
}
$max=10;
对于($c=1;$ccreate();
}
注意:$max
不能大于User::count()
,否则它将返回溢出异常
错误
在我的情况下,我有一个这样的设置
类域工厂扩展工厂{
受保护的$model=Domain::class;
公共功能定义(){
return['name'=>this->faker->unique()->domainWord()]
}
}
//播种机
对于($i=0;$i<10;$i++){
$domain=domain::factory()->create();
...
}
它没有为name
生成唯一的值,因为我基本上创建了一个新工厂,并且在每次循环运行中都有一个新的伪造者。我必须将工厂从循环中拉出:
//播种机
$factory=Domain::factory();
对于($i=0;$i<10;$i++){
$domain=$factory->create();
...
}
这是否回答了您的问题?@KamleshPaul它没有返回唯一的值,与我上面的代码没有区别。