问题描述
我构建了一个自定义 Faker Provider 来生成团队名称。
这是它的样子:
<?PHP
namespace App\Faker;
use Carbon\Carbon;
use Faker\Provider\Base;
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);
}
}
这在我的工厂中运行良好:
/**
* Define the model's default state.
*
* @return array
*/
public function deFinition(): array
{
return [
'name' => $this->faker->teamName,'city' => $this->faker->city
];
}
但是:TeamProvider
生成了一个城市,而这与 Factory 的伪造者生成的城市不同。
所以 teamName
是(只是一个例子)AC Glasgow 1990
而城市 AC Glasgow
是 London
;-) 这没有多大意义 ;-)
所以我的问题是:在这种情况下如何重用 city
以获得有效结果?
解决方法
当我再次阅读文档时,我提到了我的问题。 Faker 不用于创建以某种方式“逻辑”相关的数据,就像真人的数据一样。它只是用有效数据填充模型的字段。因此,它对于修补和测试很有用,但不适用于引导一些有效且一致的数据。