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

时间:2018-04-10 00:39:44

标签: laravel eloquent relationship

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

1 个答案:

答案 0 :(得分:-1)

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

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

此代码将放置在您的播种机中,您将为Contact&地址和播种者将使用渴望的关系来做到这一点。