【问题标题】:How to get a single record from One to Many polymorphic relation in Laravel 5.4如何在 Laravel 5.4 中从一对多多态关系中获取单个记录
【发布时间】:2017-02-05 11:14:40
【问题描述】:

我有两个具有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这样的主地址

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

【问题讨论】:

标签: laravel laravel-5 eloquent laravel-eloquent


【解决方案1】:

您可以为此使用访问器:

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

【讨论】:

  • 谢谢,不过地址不是单一字段,有line_1,line_2,state,zip,country等一些字段。
猜你喜欢
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多