Я пытаюсь получить все результаты, которые соответствуют определенному дочернему идентификатору и которые родитель имеет только для дочернего элемента. Моя первоначальная идея состоит в том, чтобы сделать это вручную с помощью вложенных foreachs, но есть ли метод, который делает это более простым способом?
Мой родительский элемент называется Proyectos
, а затем у меня есть сводная таблица с именем PaisBeneficiarioProyecto
, а другой родитель - PaisBeneficiario
. Это отношение many-to-many
.
$monto_pais = Proyecto::all()->where('pais_beneficiarios', $id)->sum('monto_aprobado');
Код, описанный выше, делает то, что вы ожидаете, но это не тот результат, который мне нужен. Вот мои модели:
Proyectos
:
public function pais_beneficiarios()
{
return $this->belongsToMany(\App\Models\PaisBeneficiario::class, 'pais_beneficiario_proyecto', 'id_proyecto', 'id_pais_beneficiario')
->withPivot('monto_beneficio');
}
PaisBeneficiario
:
public function pais_beneficiario()
{
return $this->belongsTo(\App\Models\PaisBeneficiario::class, 'id_pais_beneficiario');
}
public function proyecto()
{
return $this->belongsTo(\App\Models\Proyecto::class, 'id_proyecto');
}
PaisBeneficiarioProyectos
:
public function proyectos()
{
return $this->belongsToMany(\App\Models\Proyecto::class, 'pais_beneficiario_proyecto', 'id_pais_beneficiario', 'id_proyecto')
->withPivot('monto_beneficio');
}
Значение, которое я пытаюсь суммировать, называется monto_aprobado
, которое включено Proyectos