Laravel 访问数据的关系和键

Laravel relations and keys for accessing the data

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

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

起初有点混乱,因为文档会在 table 中使用 member_id。但是对于我的数据库结构,这没有任何意义。 无论如何,我一直在努力以索引或形式显示记录,因为我试图像这样访问个人信息:

$member->mobile

而不是

$member->person->mobile

我很想摆脱中间的这个 'person',就像我对左连接所做的那样。有 laravel 的方法吗?不使用左连接。每次我尝试 google 它时,我都会得到通常的 eloquent 关系内容。 也许已经存在一个选项......如果是这样,我可能会编写不必要的函数,否则我什至可能会切换回使用左连接和范围。 如果我继续使用它,它会变得更糟..例如

$member->person->address->street  

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

我可能是错的,但我不认为这是可能的,除非创建一个新的 class 来聚合您想要的任何模型的所有属性 + 关系的属性。您还可以更新您的模型 class 并覆盖 __get() 方法并做出相应的反应,但这听起来工作量很大(确保也调用父实现)。

指定关系名称的需要实际上使您的代码更易于阅读,因为 $member->mobile 看起来更像是您的成员 class 的 属性。此外,它允许您在检索关系 [s]

之前添加额外的约束

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