Итак, вот мои отношения:
Фонд принадлежит 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. Есть идеи?
Так что, если ваши отношения такие —
PlanCode имеет много фонды
фонд принадлежит PlanCode
PlanType имеет много PlanCodes
PlanCode принадлежит PlanType
Затем вы можете добавить еще одно отношение, как это —
PlanType имеет много фонды через PlanCodes
ОБНОВИТЬ
После добавления такой функции в ваш PlanType учебный класс —
public function funds() {
return $this->hasManyThrough('fund', 'planCode', PT, PC);
}
Вы можете просто получить доступ фонды на ваше PlanType модель, как это —
$planType->Funds
Взгляните на документы Вот.
Да, у 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);
}
Возможно, вам придется полностью использовать пространство имен для ваших моделей, в зависимости от структуры вашего приложения.