介绍:
我有这些表与他们的模型:
规则:
可以在此处完成两种可能的关系规划:
用户有一个地址和地址属于用户[即一对一的关系],但缺点是这里的外键位于地址表即user_id字段,并通过与其他模型[公司和财产]重复相同的关系,我们将获得地址表中的另外两个外键是[ company_id和property_id ],那么我们最终会得到 3个模型的3个外键但每个行记录只会填充一个,只留下两个外键字段留空
我觉得这是地址表的间接费用.
或者相反:
我的问题:
是否有任何其他关系可以将这4个模型绑定在一个类似于多态关系的关系中,但是没有使用MorphMany但是使用MorphOne这很奇怪,我在Laravel的文档中找不到它,尽管该方法本身存在于Eloquent Relations中.
这种MorphOne多态关系是否可能以及它是如何组成的?
现有代码:
//Address model
public function user(){
return $this->hasOne(User::class);
}
public function company(){
return $this->hasOne(Company::class);
}
public function property(){
return $this->hasOne(Property::class);
}
//User model …Run Code Online (Sandbox Code Playgroud) 我有这种多对多关系 Laravel Eloquent 关系模型是:
class Email extends Model //actually represent the email account
{
protected $table = 'emails';
protected $fillable = [
'user_id',
'name',
];
public function messages() {
return $this->belongsToMany(Message::class)->withPivot('email_subtype_id');
}
}
class Message extends Model //actually represent the email message
{
protected $table = 'messages';
protected $fillable = [
'subject',
'body ',
];
public function emails() {
return $this->belongsToMany(Email::class)->withPivot('email_subtype_id');
}
}
class EmailMessage extends Pivot //actually represent the pivot table
{
protected $table = 'email_message';
protected $fillable = …Run Code Online (Sandbox Code Playgroud)