gpt4 book ai didi

Laravel 5 模型继承 - 获取子模式时返回父数据

转载 作者:行者123 更新时间:2023-12-04 16:06:13 25 4
gpt4 key购买 nike

所以我有一个疯狂的想法,它与 Laravel 和模型继承有关。我想用单个父级配置一组模型,但是当我请求子模型时,我希望返回数据。例如,我会有一个 Contacts 模型,它是父模型:

Contacts: id, first_name, last_name, image

然后我会有一系列从 Contacts 继承的联系人类型。这些子模型中的每一个都有自己的一组字段(即对于成员,我需要知道他们何时加入等,但对于志愿者,我可能需要知道他们是否拥有最新的急救证书)。这里有一些例子:
Members: contact_id, joined_on, birthday, medical_concerns
Volunteers: contact_id, current_first_aid, interests
Staff: contact_id, pay_rate

我希望能够执行以下操作:
$members = \App\Member::all();

并返回联系人 AND 成员数据,就好像所有内容都是一行一样,如下所示:

+---+------------+-----------+-------+------------+------------+------------------+
|id | first_name | last_name | image | joined_on | birthday | medical_concerns |
+---+------------+-----------+-------+------------+------------+------------------+
| 1 | Fred | Bloggs | null | 2015-01-01 | 1993-10-22 | false |
| 2 | Jim | Phillips | null | 2016-04-30 | 1987-09-22 | true |
+---+------------+-----------+-------+------------+------------+------------------+

为了让它更难一些,我希望所有适用于 parent 的关系都为 child 工作。所以我可以做这样的事情:
$members = \App\Member::find(1)->phone

而且,即使 Member 模型没有定义到 Phone 模型的关系,它也会返回与 Contact 相关的电话,因为父模型具有这种关系。

我还希望能够在检索数据时指定不属于子项的列并且不会让 Laravel 抛出错误:
$members = \App\Member::all(['first_name','last_name','joined_on'])

我搞砸了覆盖 Eloquent 模型并编写我自己的 all 版本并找到有效的方法,但看起来我可能必须覆盖所有方法才能使其正常工作,也许这不仅仅是工作放弃 Eloquent 并寻找其他(或我自己定制的)解决方案。

所以我想我的问题是:有没有一种“简单”的方法可以用 Laravel 做到这一点,还是我试图让它做它从未打算做的事情?

最佳答案

我认为你可以这样做:

$members = \App\Members::with('contact')->all();

当然,您的成员模型应该已经定义了与联系人模型的关联关系。

关于Laravel 5 模型继承 - 获取子模式时返回父数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41521883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com