Laravel关系和访问数据的关键

时间:2017-06-27 17:54:28

标签: laravel eloquent relationships

我刚刚在一个雄辩的模型中建立了我的第一个关系。

class Member extends Model
{
    public function person()
    {
        return $this->hasOne(Person::class, 'id', 'person_id');
    }

起初有点令人困惑,因为文档会在person表中使用member_id ..但对于我的db结构,这没有任何意义。 无论如何,我一直在努力以索引或形式显示记录,因为我试图访问这样的人物信息:

$member->mobile

而不是

$member->person->mobile

我很想摆脱这个“人”的问题。介于两者之间,就像我对左连接一样。有这样做的laravel方式吗?不使用左连接。每次我尝试谷歌它,我得到通常雄辩的关系的东西。 也许有一个选项已经存在......如果是这样我可能会编写不必要的函数,否则我甚至可能会切换回使用左连接和范围。 如果我继续使用它,它会变得更糟......例如

$member->person->address->street  

甚至连续5次,我有点想避免

1 个答案:

答案 0 :(得分:1)

我可能错了,但我认为除了创建一个新类来聚合所需模型的所有属性+关系属性之外,我认为这是不可能的。您还可以更新模型类并覆盖__get()方法并做出相应的反应,但这听起来也很多(确保也调用父实现)。

指定关系名称的需要实际上使您的代码更容易阅读,因为$member->mobile看起来更像是您的成员类的属性。另外,它允许您在检索关系之前添加其他约束[s]

https://laravel.com/docs/5.4/eloquent-relationships#querying-relations