2

我有两个具有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

我怎样才能实现这个目标?

4

1 回答 1

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;
}
于 2017-02-05T12:39:21.280 回答