我開發了一個使用Laravel5/MySQL構建的基於訂閱的應用程序。我正在處理從MySQL獲取發票。在每張發票上,我們都要顯示「前一個餘額」,「付款」,「本月費用」,「應付到期日」,「應付日期後付款」等幾列。 現在「上一個餘額」是「上一個餘額」 - 「付款」+「本月費用」中的「上一個發票的到期日」。 因此,這裏開始遞歸併且將繼續,直到db中的所有記錄都被獲取。這也適用於單張發票。但是當我嘗試取多個(100〜200)服務器時會耗盡內存。用一張約13k的發票表。處理MySQL/PHP中的遞歸
作爲對此問題的修復,我在發票生成更新此列時向表「payments_by_due_date」添加了一個新列。 更改並更新所有記錄後,我嘗試使用~1000個發票,並花費3〜4秒鐘獲取所有記錄,爲所有發票製作PDF並將它們全部打包到一個zip文件中,並將該zip文件移交給用戶下載。
但是,這種方法存在很大問題,如果將來的任何發票需要更正,那麼在特定發票之後生成的所有發票都需要手動更新。
所以,如果你們中的任何人都可以幫我解決這個問題,我會很感激。
也許我錯過了,但問題在哪裏? – Jhecht
@Jhecht每張發票都是指引發遞歸的「以前的發票」,有什麼適當的方法來處理MySQL中的遞歸? –
嗯,有趣的問題。老實說,從來沒有這樣的東西彈出。我的第一個傾向是創建一個名爲'previous_balance'的列,我可能會在創建後附加到觸發器。這將查找以前的賬單 - 付款並將其插入行中。我只是不覺得在所有時間點上都需要將它們聯繫起來。他們要麼償還了以前的賬單,要麼他們沒有。 – Jhecht