1

だからここに私の関係があります:

ファンドはプランコードに属します

planCode は planType に属します

私がする必要があるのは、特定のプラン タイプの一部である Fund_id を見つけることです。私はこのようなことを試しました:

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

これで、3 つの計画コードとそれらの関係が熱心にロードされた状態を取得します。私が欲しいのは、すべての Fund_id のリストです。試してみ$plans->lists('planCode.fund.fund_id', 'code')ましたが、これは Fund_id に対して null を返します。何か案は?

4

2 に答える 2

2

だからあなたの関係がこのようなものなら -

PlanCode には多くの ファンドがあります

ファンドは PlanCodeに属しています

PlanType には多くの PlanCodeがあります

PlanCodePlanTypeに属します

次に、このような別の関係を追加できます-

PlanTypeには、 PlanCodesを通じて多くの 資金があります

アップデート

このような関数をPlanTypeクラスに追加した後 -

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

次のようにPlanTypeモデルのFundsに簡単にアクセスできます-

$planType->Funds

こちらのドキュメントをご覧ください。

于 2016-04-11T19:26:36.970 に答える
1

ええ、アテフスにはそれが 1 つあります。Laravel には非常に便利な関係があるため、関係の関係を取得するためにデータベースに対して繰り返しクエリを実行する必要はありません。これが hasManyThrough 関係です。

たとえば、ここでは、planType モデルにplanCode モデルを通じて多くのファンド モデルがあります。planType モデルには次のような資金メソッドが含まれている必要があります。ここで、PC は資金テーブルの planCode->id 列名であり、PT は planCode テーブルの planType->id 列です。

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

アプリケーションの構造によっては、モデルの名前を完全に指定する必要がある場合があります。

于 2016-04-11T19:36:50.963 に答える