Laravel 5.2 Eloquent — поиск всех идентификаторов через множественные отношения

Итак, вот мои отношения:

Фонд принадлежит 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. Есть идеи?

1

Решение

Так что, если ваши отношения такие —

PlanCode имеет много фонды

фонд принадлежит PlanCode

PlanType имеет много PlanCodes

PlanCode принадлежит PlanType

Затем вы можете добавить еще одно отношение, как это —

PlanType имеет много фонды через PlanCodes

ОБНОВИТЬ

После добавления такой функции в ваш PlanType учебный класс —

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

Вы можете просто получить доступ фонды на ваше PlanType модель, как это —

$planType->Funds

Взгляните на документы Вот.

2

Другие решения

Да, у atefth есть это в одном. У Laravel действительно полезные отношения, поэтому вам не нужно повторять запросы к базе данных, чтобы получить отношения отношений. Это отношение hasManyThrough.

Так вот, например, ваша модель planType имеет много моделей фонда через модель planCode. Ваша модель planType должна содержать метод fund, который выглядит следующим образом: PC — это имя столбца planCode-> id в таблице fund, а PT — столбец planType-> id в таблице planCode:

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

Возможно, вам придется полностью использовать пространство имен для ваших моделей, в зависимости от структуры вашего приложения.

1

По вопросам рекламы [email protected]