我构建了一个自定义的Faker Provider来生成球队名。
是这样的:
<?php
namespace AppFaker;
use CarbonCarbon;
use FakerProviderBase;
class TeamProvider extends Base
{
...
public function teamName()
{
$name[] = static::randomElement(static::$prefixes);
...
$name[] = $this->generator->city;
//some more stuff to create a nice team name
return implode(" ", $name);
}
}
这个在我的Factory中运行良好:
/**
* Define the model's default state.
*
* @return array
*/
public function definition(): array
{
return [
'name' => $this->faker->teamName,
'city' => $this->faker->city
];
}
但是:TeamProvider
生成了一个城市,而这个城市不是Factory's faker生成的城市。
所以teamName
是(只是一个例子)AC Glasgow 1990
和AC Glasgow
的城市是London
;-)这没有多大意义;-)
所以我的问题是:我如何在这种情况下重用city
来获得有效的结果?
当我再次阅读文档时,我提到了我的问题。Faker并不用于创建某种"逻辑上"的数据。就像真人的数据一样。它只是用有效的数据填充模型的字段。所以它对于修补和测试是有用的,但对于引导一些有效和一致的数据不是有用的。