我刚刚在一个雄辩的模型中建立了我的第一个关系。
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次,我有点想避免
答案 0 :(得分:1)
我可能错了,但我认为除了创建一个新类来聚合所需模型的所有属性+关系属性之外,我认为这是不可能的。您还可以更新模型类并覆盖__get()方法并做出相应的反应,但这听起来也很多(确保也调用父实现)。
指定关系名称的需要实际上使您的代码更容易阅读,因为$member->mobile
看起来更像是您的成员类的属性。另外,它允许您在检索关系之前添加其他约束[s]
https://laravel.com/docs/5.4/eloquent-relationships#querying-relations