我有两个具有One to Many
多态关系的模型,如:
class Address extends Model
{
public function addressable()
{
return $this->morphTo();
}
}
class User extends Authenticatable
{
public function addresses()
{
return $this->morphMany('App\Address', 'addressable');
}
}
在地址模型中,有一个名为is_primary
的列,一个用户只能有一个主地址。现在在用户更新表单中,我想仅从地址模型获取主地址。
我知道我可以提取所有地址并检查哪一个是主要地址或者这个:
public function primaryAddress()
{
return $this->addresses()->where('is_primary',true)->first();
}
但问题是表单字段没有获取值,我想访问主要地址,如$user->address_line_1
我如何实现这一目标?
答案 0 :(得分:0)
你可以使用一个访问器:
public function getPrimaryAddressAttribute()
{
return $this->addresses()->where('is_primary',true)->first();
}
现在你得到$ user-> primary_address
如果您想直接访问这些行,请执行以下操作:
public function getAddressLine1Attribute()
{
return $this->addresses()->where('is_primary',true)->first()->address_line_1;
}