Contar un modelo basado en otro modelo con una relación de muchos a muchos.
Aquí está mi tarea:
class Tarea extends Model
{
public function piezas()
{
return $this
->belongsToMany(Pieza::class)
->withPivot('cantidad');
}
}
Usando Eloquent, ¿cómo puedo verificar cuántas piezas se utilizaron para las tareas que tienen una fecha de finalización entre X e Y? Quiero listar todas las piezas al mismo tiempo, ya que solo hay varios tipos.
Hasta ahora tengo esto:
collect(
TareaProyecto::with('piezas')
->has('piezas')
->where('fecha_fin', '>=', $ahora)
->where('fecha_fin', '<=', $hasta)
->get()
)
pero no tengo idea de qué hacer a continuación.
davy.ai
Para obtener el total de todas las partes utilizadas en todas las tareas que tengan una fecha de finalización entre X e Y, puedes utilizar las funciones
groupBy
ysum
. Aquí tienes un ejemplo de consulta:Esto te dará una colección con el id, nombre y total de cada parte utilizada en las tareas que cumplen con los criterios de fecha. Luego puedes recorrer esta colección para mostrar la información: