Laravel Eloquent - 从只有一个 child 的 parents 中获取结果
Laravel Eloquent - Get results from parents that has only one child
我正在尝试获取与某个 child id 匹配的所有结果,并且 parent 仅在 child 上有。我最初的想法是用嵌套的 foreach 手动完成,但有没有更简单的方法?
我的parent叫Proyectos
然后我有一个支点table叫PaisBeneficiarioProyecto
,另一个parent是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
下面的查询为您提供 Proyecto
个模型的 monto_aprobado
字段的总和,这些模型只有一个 pais_beneficiarios_count
。
Proyecto::withCount('pais_beneficiarios')
->having('pais_beneficiarios_count', 1)
->sum('monto_aprobado');
我正在尝试获取与某个 child id 匹配的所有结果,并且 parent 仅在 child 上有。我最初的想法是用嵌套的 foreach 手动完成,但有没有更简单的方法?
我的parent叫Proyectos
然后我有一个支点table叫PaisBeneficiarioProyecto
,另一个parent是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
下面的查询为您提供 Proyecto
个模型的 monto_aprobado
字段的总和,这些模型只有一个 pais_beneficiarios_count
。
Proyecto::withCount('pais_beneficiarios')
->having('pais_beneficiarios_count', 1)
->sum('monto_aprobado');