首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于访问数据的Laravel关系和键

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

Stack Overflow用户
提问于 2017-06-28 01:54:28
回答 1查看 25关注 0票数 0

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

代码语言:javascript
运行
复制
class Member extends Model
{
    public function person()
    {
        return $this->hasOne(Person::class, 'id', 'person_id');
    }

一开始有点混乱,因为文档会在person表中使用member_id。但是对于我的db结构来说,这是没有意义的。无论如何,我很难在索引或表单中显示记录,因为我试图像这样访问人员信息:

代码语言:javascript
运行
复制
$member->mobile

而不是

代码语言:javascript
运行
复制
$member->person->mobile

我很想摆脱这个介于两者之间的“人”,就像我在处理左连接时一样。有没有什么方法可以做到这一点?而不使用左连接。每次我尝试在谷歌上搜索它,我都会得到通常口若悬河的关系信息。也许有一种选择已经存在了。如果是这样的话,我可能会编写不必要的函数,否则我甚至可能会切换回使用左连接和作用域。如果我继续使用这个,它会变得更糟..例如

代码语言:javascript
运行
复制
$member->person->address->street  

甚至是连续5次,我都想避免

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 02:07:51

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44786843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档