Laravel 5.2 Eloquent - 通过多个关系查找所有 id

Laravel 5.2 Eloquent - Finding all id's through multiple relationships

这是我的关系:

一个基金属于一个planCode

planCode 属于 planType

我需要做的是找到属于某些计划类型的 fund_id。我试过这样的事情:

$plans = (new 'App\PlanType')->with('planCode.fund')->whereIn('code', ['PENS', 'ANN', 'WEL'])->get();

有了这个,我得到了三个计划代码,它们的关系是急切加载的。我想要的是所有 fund_id 的列表。我尝试了 $plans->lists('planCode.fund.fund_id', 'code'),但是对于 fund_id,这个 returns 为空。有什么想法吗?

所以如果你的人际关系是这样的-

PlanCode has many Funds

Fund belongs to a PlanCode

PlanType has many PlanCodes

PlanCode belongs to a PlanType

然后你可以像这样添加另一个关系 -

PlanType has many Funds through PlanCodes

更新

将这样的函数添加到您的 PlanType class -

之后
public function funds() {
    return $this->hasManyThrough('fund', 'planCode', PT, PC);
}

您可以像这样在 PlanType 模型上简单地访问 Funds -

$planType->Funds

查看文档 here

是的,atefth 合二为一。 Laravel 有一个非常有用的关系,这样你就不必重复查询数据库来获得关系的关系。这就是 hasManyThrough 关系。

所以在这里,例如,您的 planType 模型有很多基金模型 planCode 模型。您的 planType 模型应包含如下所示的基金方法,其中 PC 是基金 table 中的 planCode->id 列名称,PT 是 planCode table 中的 planType->id 列:

public function funds() {
    return $this->hasManyThrough('fund', 'planCode', PT, PC);
}

您可能必须完全命名您的模型,具体取决于您的应用程序的结构。