2014-07-23 37 views
0

我正在開發一個發票項目。我的一個發票實體領域是INVOICE_NUMBER,這是爲了匹配這個模式:建立發票參考插入

F<YYYYMM><INCREMENT> 

其中YYYYMM是當前年份,月份和增量遞增每張發票的整數,並重置了對1的每個第一發票這個月。我希望能夠在實體插入數據庫時​​構建整個字段,但我沒有找到任何方法來收聽實體插入。 Doctrine有一些叫做prePersist,postPersist的回調函數,它們會在每次持續時觸發,而不僅僅是插入。我不想重建每個持久性領域。 另一種方法是在我的實體中創建一個自定義方法,我會調用「buildReference()」,並在持久化數據庫插入的實體後調用它,但似乎我無法從實體內部訪問存儲庫。所以我無法檢索上次保存的增量,或者類似的東西。

任何有關如何實現我願意做的建議將不勝感激。

回答

0

prePersist僅在插入時調用。

preUpdate在每次更新時調用。

即使它是不是這樣的,你可以檢查是否有發票號碼已經設置如..

if (null !== $invoice->getInvoiceNumber()) { 
    return; 
} 

$calculator->generateInvoiceNumber($invoice);