2017-03-01 2 views
0

Symfony 3.2 및 Doctrine 2.5.6과 함께 Gedmo 확장을 사용하고 있는데 문제가 있습니다. Gedmo \ Blameable과 UniqueEntity 제약 조건을 함께 사용할 수 없습니다. 실제로 비난받는 필드는 유효성 검사시 여전히 null입니다. 작동 시키거나 해결할 수있는 방법이 있습니까? 솔루션Gedmo Blameable 필드에서 UniqueEntity 사용

보다는 수동 (Gedmo \ Blameable 이익을 제거) 사용자 설정, 내가 만든 내 자신의 엔티티 검증 : 여기

내 기업

/** 
* @UniqueEntity(
*  fields={"author", "question"}, 
*  errorPath="question", 
*  message="This author already has an answer for that Question" 
*) 
* @ORM\Entity 
*/ 
class TextAnswer 
{ 

    /** 
    * @ORM\ManyToOne(targetEntity="User") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    * @Gedmo\Blameable(on="create") 
    */ 
    private $author; 

    /** 
    * @Assert\NotNull() 
    * @ORM\ManyToOne(targetEntity="Question", inversedBy="textAnswers") 
    * @ORM\JoinColumn(name="question_id", referencedColumnName="id") 
    */ 
    private $question; 
} 

감사

EDIT입니다 . Doctrine과 토큰 저장소를 인수로 제공하여 db에 대한 쿼리를 만들어 현재 연결된 사용자 (Gedmo \ Blameable에서 나중에 사용하게 될)와 내 기준을 확인합니다.

+0

처음에 외국어로 된 생각 _UniqueEntity Gedmo Blameable_ – AbraCadaver

답변

0

Doctrine의 플러시 작업 중에 BlameableListener이 호출됩니다. 이는 일반적으로 엔티티의 유효성을 검사 한 후에 발생합니다. 따라서 확인시 $authornull입니다.

가장 간단한 해결 방법은 $author을 미리 설정하는 것입니다.

관련 문제