首页 文章

惯例:我应该将hasOne和belongsTo方法放在哪个模型中

提问于
浏览
0

我在Laravel应用程序中有两个模型,联系人和地址彼此相关 .

联系人字段:[id,name]地址字段:[id,address,contact_id]

在Contact模型中,我添加了:

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
    ];
});

1 回答

  • -1

    首先,您仍然可以使用当前实施的工厂创建播种机,即

    $contacts = factory(App\Contact::class, 100)
    ->create()
    ->each(function($contact){
        $contact->address()->save(factory(App\Address::class)->make());
    }
    

    这段代码将被放置在你的播种机中,你将为联系人和地址定义工厂,而播种者将使用渴望的关系来做到这一点 .

相关问题