고유 한 8 자의 영숫자 문자열이 포함되어야하는 고유 한 열이있는 DB 테이블이 있습니다.symfony 아키텍처 : 엔티티 생성시 리포지토리 액세스가있는 사용자 정의 메서드
나는 (마지막으로) 내 MVC 프레임 워크에서 symfony로 이동했습니다. 지금까지 CREATE에서 호출 된 모델에서 개인 메소드가 있었을 것입니다. 이 메서드의 루프는 무작위 해시를 생성하고 테이블에서 READ를 수행하여 고유한지 확인합니다. 그렇다면 해시가 반환되어 CREATE 요청에 삽입됩니다.
내가보기에 문제는 symfony에서 입니다. 엔티티 클래스 내에서 저장소에 액세스 할 수 없으므로 lifecycle callback을 사용할 수 없습니다. 나는 그 뒤에있는 추론을 이해한다. 반면 해시 생성은 컨트롤러와 아무 관련이 없습니다. 즉, 모델에 속한 내부 논리입니다. 나중에 데이터 구조를 변경하면 컨트롤러를 편집해야합니다.
제 질문은 아키텍처입니다. 해시 생성 방법은 어디에 두어야합니까?
엔터티 생성자에서
해시를 생성하는 방법을 알고 있습니다. 엔티티에서 DB가 실제로 고유한지 확인하기 위해 수행해야합니다. (생성 된 해시의 고유성에 대한이 설명을 참조하십시오. http://stackoverflow.com/a/4070171/698511) – Tim
그래서 이벤트 리스너를 사용해야합니다. http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers .html – Picoss
그들을 보았지만 EntityRepository로 관리했습니다 (내 답변 참조). 아마 여러 가지 방법이있을 수 있습니다. 도와 주셔서 감사합니다! – Tim