Hai solo bisogno di fare una buona query MySQL.
Vedi qui .
Puoi fare addizioni, sottrazioni e cose come date BETWEEN x AND Y
, puoi eseguire un SELECT SUM()
con un GROUP BY
e così via.
Ciò che Hakan significa (credo) è che lo stai facendo nel modo sbagliato:dovresti prima fare una query che faccia quasi tutto il lavoro per te. Non c'è bisogno di sviluppare cose così complesse.
E altri tre consigli:
- Cerca di evitare parole chiave in Php come
$expense->Date
. Questo rende i problemi di evidenziazione della sintassi (nel best caso, nel peggiore Php non capirà il tuo codice). - aggiungi altri commenti nel tuo codice per spiegare cosa stai cercando di fare.
- cerca di evitare le parole chiave in Php AND Query SQL. Hai una colonna denominata '
Date
' e una colonna denominata 'Type
'. Questo non è sicuro.
Ecco solo un inizio di come potrebbe apparire il tuo SQL e dovrebbe quasi coprire il 95% del tuo codice. Nota:questo è un suggerimento:lascia che tutti i server di database facciano il lavoro per te, questo è fatto apposta per questo:
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'