Bạn chỉ cần thực hiện một truy vấn MySQL tốt.
Xem tại đây .
Bạn có thể thực hiện các phép cộng, phân số và những thứ như date BETWEEN x AND Y
, bạn có thể thực hiện SELECT SUM()
với GROUP BY
và như vậy.
Ý của Hakan (tôi đoán vậy) là bạn đang làm sai cách:trước tiên bạn nên thực hiện một truy vấn để hầu như hoàn thành công việc cho bạn. Không cần phải phát triển những thứ phức tạp như vậy.
Và ba lời khuyên khác:
- cố gắng tránh các từ khoá trong Php như
$expense->Date
. Điều này làm cho các vấn đề về tô sáng cú pháp (trong tốt nhất trong trường hợp xấu nhất Php sẽ không hiểu mã của bạn). - thêm các nhận xét khác vào mã của bạn để giải thích những gì bạn đang cố gắng thực hiện.
- cố gắng tránh các từ khoá trong Php VÀ Truy vấn SQL. Bạn có một cột tên là '
Date
'và một cột có tên'Type
'. Điều này không an toàn.
Đây chỉ là sự khởi đầu của SQL của bạn có thể trông như thế nào và nó gần như sẽ bao phủ 95% mã của bạn. Lưu ý:đây là một gợi ý:hãy để tất cả máy chủ cơ sở dữ liệu thực hiện công việc cho bạn, điều này được thực hiện cho điều đó:
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'