用于访问数据的Laravel关系和键

用于访问数据的Laravel关系和键,laravel,eloquent,relationships,Laravel,Eloquent,Relationships,我刚刚以一种雄辩的方式建立了我的第一段关系 class Member extends Model { public function person() { return $this->hasOne(Person::class, 'id', 'person_id'); } 一开始有点混乱,因为文档会在person表中使用member_id。。但对于我的数据库结构来说,这毫无意义。 不管怎样,我一直在努力以索引或表格的形式显示记录,因为我试图访问如下人

我刚刚以一种雄辩的方式建立了我的第一段关系

class Member extends Model
{
    public function person()
    {
        return $this->hasOne(Person::class, 'id', 'person_id');
    }
一开始有点混乱,因为文档会在person表中使用member_id。。但对于我的数据库结构来说,这毫无意义。 不管怎样,我一直在努力以索引或表格的形式显示记录,因为我试图访问如下人员信息:

$member->mobile
而不是

$member->person->mobile
我很想摆脱中间的这个“人”,就像我在左撇子中一样。有没有一种方法可以做到这一点?不使用左连接。每次我试着用谷歌搜索它时,我都会得到通常的有说服力的人际关系信息。 也许有一个选项已经存在。。。如果是这样,我可能正在编写不必要的函数,否则我甚至可能切换回使用左连接和作用域。 如果我继续使用这个,情况会变得更糟。。比如说

$member->person->address->street  

甚至是我想避免的一行中的5个,我可能错了,但我认为这是不可能的,除了创建一个新类来聚合任何模型的所有属性+关系的属性之外。您还可以更新模型类并重写_get()方法并做出相应的反应,但这听起来也需要做很多工作(请确保也调用父实现)

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


除了少打字之外,您想跳过指定关系名称的原因是什么?我真的很想保持视图整洁,尤其是在使用小屏幕笔记本时:我从未见过或做过不同的事情。我只是觉得这看起来一团糟:爸,在我上一次的工作经历中,我看到了很多原始的查询,并留下了连接。。。我想你说得有道理,知道所有的数据都来自哪里。我想我可以坚持一段时间,学习更多的人际关系知识,习惯更好的方式。我一直在努力学习,在很短的时间内学到了很多东西,有时候我的脑子里已经没有空间了,哈哈。无论如何,到目前为止,我真的很喜欢给每一张桌子它自己的模型。仔细想想,写我自己的功能而不是模型所提供的功能是没有意义的。