Solo necesitas hacer una buena consulta de MySQL.
Ver aquí .
Puedes hacer sumas, restas y cosas como date BETWEEN x AND Y
, puedes hacer SELECT SUM()
con un GROUP BY
y así sucesivamente.
Lo que Hakan quiere decir (supongo) es que lo estás haciendo de manera incorrecta:primero debes hacer una consulta que haga casi todo el trabajo por ti. No hay necesidad de desarrollar algo tan complejo.
Y otros tres consejos:
- trate de evitar palabras clave en Php como
$expense->Date
. Esto hace que los problemas de resaltado de sintaxis (en el mejor caso, en el peor Php no entenderá su código). - agregue más comentarios en su código para explicar lo que está tratando de hacer.
- trate de evitar las palabras clave en Php Y Consultas SQL. Tiene una columna llamada '
Date
' y una columna llamada 'Type
'. Esto no es seguro.
Este es solo un comienzo de cómo podría verse su SQL, y casi debería cubrir el 95% de su código. Nota:esta es una sugerencia:deje que todos los servidores de bases de datos hagan el trabajo por usted, esto está hecho para eso:
SELECT
ps.Due,ps.Date,
wt.Amount,wt.Date,
ex.Amount,ex.Date
LEFT JOIN patient_sessions ps
ON xxx
WHERE ps.Type='Session'
AND ps.Date
BETWEEN DATE_ADD(NOW(), INTERVAL '-28' DAY)
AND DATE_ADD(NOW(), INTERVAL 1 DAY)
LEFT JOIN work_times wt
ON xxx
LEFT JOIN expenses ex
ON xxx
WHERE ex.Client='Psychotherapy'