php中与FactoryMuffin的一对多关系?
我试图使用FactoryMuffin,一个类似于FactoryGirl的php工厂库,为我的集成测试生成测试数据 在我的应用程序中,一个php中与FactoryMuffin的一对多关系?,php,testing,integration-testing,factory-bot,factory,Php,Testing,Integration Testing,Factory Bot,Factory,我试图使用FactoryMuffin,一个类似于FactoryGirl的php工厂库,为我的集成测试生成测试数据 在我的应用程序中,一个人可以有许多电子邮件和许多令牌。我想在我的工厂里生成一个人,其中包含五封电子邮件和一封令牌,并围绕它编写一些测试 目前,我对工厂的定义如下: FactoryMuffin::define('Person')->setDefinitions([ 'id' => Faker::numberBetween(123456789, 987
人
可以有许多电子邮件
和许多令牌
。我想在我的工厂里生成一个人
,其中包含五封电子邮件
和一封令牌
,并围绕它编写一些测试
目前,我对工厂的定义如下:
FactoryMuffin::define('Person')->setDefinitions([
'id' => Faker::numberBetween(123456789, 987654321),
'name' => Faker::name()
]);
FactoryMuffin::define('Email')->setDefinitions([
'id' => Faker::numberBetween(123456789, 987654321),
'address' => Faker::email(),
'person_id' => 'factory|Person',
]);
FactoryMuffin::define('Token')->setDefinitions([
'token' => Faker::numberBetween(1234567891234, 9876543211234),
'person_id' => 'factory|Person',
]);
我的问题是,当我创建一个人
时,它不会创建任何关联的电子邮件
s或令牌
s。当我创建一个令牌
时,它会自动创建一个人
,但没有关联的电子邮件
s
我该怎么处理呢?根据工厂松饼的工作方式,你不需要创造人。您只需创建电子邮件并访问电子邮件创建的人(另一种方式)。在下面的示例中,我们创建一条消息,然后访问为我们创建的消息的用户 从他们的例子来看这个例子 在您的情况下,您可以创建一封
电子邮件
,并访问人员
,如下所示
$email = FactoryMuffin::create('Email');
$emailPerson = $email->person;
你甚至可以更进一步,像这样为同一个人创建100封电子邮件和50个代币
$person = FactoryMuffin::create('Person');
$emails = FactoryMuffin::seed(100, 'Email', ['person_id' => $person->id]);
$tokens = FactoryMuffin::seed(50, 'Token', ['person_id' => $person->id]);
谢谢这就是我最终要做的,尽管实际上我的数据库模式比这复杂得多,而且使所有工厂有序运行的代码仍然有点脏
$person = FactoryMuffin::create('Person');
$emails = FactoryMuffin::seed(100, 'Email', ['person_id' => $person->id]);
$tokens = FactoryMuffin::seed(50, 'Token', ['person_id' => $person->id]);