我在Laravel应用程序中有两个模型,联系人和地址彼此相关。
联系人字段:[id,name] 地址字段:[id,address,contact_id]
在联系模式中,我添加了:
public function address(){
return $this->hasOne(Address::class);
}
在地址模型中,我添加了:
public function contact(){
return $this->belongsTo(Contact::class);
}
我想知道是否可以在函数上交换hasOne和belongsTo,或者它是否违反任何存在的约定。
喜欢这个 联系人字段:[id,name,address_id] 地址字段:[id,address]
我问这个的原因是因为我想创建一个在相关表上创建数据的工厂。
所以我想生成其他相关联系人表的种子,如地址,角色等,并在创建过程中获取id。
$factory->define(App\Contact::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'address_id' => factory(App\Address::class)->create()->id,
'other_detail_id' => factory(App\OtherDetail::class)->create()->id
];
});
答案 0 :(得分:-1)
首先,您仍然可以使用当前实施的工厂创建播种机,即
$contacts = factory(App\Contact::class, 100)
->create()
->each(function($contact){
$contact->address()->save(factory(App\Address::class)->make());
}
此代码将放置在您的播种机中,您将为Contact&地址和播种者将使用渴望的关系来做到这一点。