2014-07-23 2 views
0

송장 프로젝트를 진행 중입니다. 인보이스 개체 필드 중 하나는이 패턴과 일치하도록되어 INVOICE_NUMBER입니다 : YYYYMM 현재 년이며 월과 INCREMENT 모든 청구서에 증가 정수이고, 1의 모든 첫 번째 청구서에 resetted인보이스 발행시 참조 삽입

F<YYYYMM><INCREMENT> 

달. 엔티티가 데이터베이스에 삽입 될 때 전체 필드를 구축 할 수 있기를 원하지만 엔티티 삽입을 수신 대기하는 방법이 없습니다. Doctrine은 InsertPersist, postPersist, but라고하는 콜백을 가지고 있는데, 삽입시뿐만 아니라 모든 지속성에 대해 트리거합니다. 그리고 나는 모든 분야에서 그 분야를 재건하고 싶지 않습니다. 다른 방법은 내 엔티티에서 사용자 정의 메소드를 작성하는 것입니다. "buildReference()"를 호출하고 DB 삽입을 위해 내 엔티티를 유지 한 후 호출하지만 엔티티 내부에서 저장소에 액세스 할 수없는 것 같습니다. . 따라서 저장된 마지막 증분 또는 그와 같은 것을 검색 할 수 없습니다.

내가 기꺼이하고자하는 일을 성취하는 방법에 대한 조언은 감사하겠습니다.

답변

0

prePersist은 삽입시에만 호출됩니다.

preUpdate이 업데이트 될 때마다 호출됩니다.

당신이 송장 번호가 이미 같은 설정되어 있는지 확인할 수 있습니다 그런 식으로 ..되지 않은 경우에도

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

$calculator->generateInvoiceNumber($invoice);