1

所以这是我的关系:

基金属于计划代码

一个 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返回null。有任何想法吗?

4

2 回答 2

2

所以如果你们的关系是这样的——

PlanCode 有很多 基金

基金 属于一个PlanCode

PlanType 有很多 PlanCode

PlanCode 属于一个PlanType

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

PlanType 通过PlanCodes拥有许多 Funds

更新

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

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

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

$planType->Funds

看看这里的文档。

于 2016-04-11T19:26:36.970 回答
1

是的,atefth 合而为一。Laravel 有一个非常有用的关系,因此您不必重复查询数据库来获取关系的关系。这就是 hasManyThrough 关系。

所以在这里,比如你的planType模型通过planCode模型有很多基金模型。你的 planType 模型应该包含一个如下所示的funds 方法,其中PC 是fund 表中的planCode->id 列名,PT 是planCode 表中的planType->id 列:

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

根据应用程序的结构,您可能必须完全命名您的模型。

于 2016-04-11T19:36:50.963 回答