2017-03-01 57 views
0

我正在使用Gedmo擴展以及Symfony 3.2和Doctrine 2.5.6,並且遇到了問題。我不能讓Gedmo \ Blameable和UniqueEntity約束一起工作。事實上,在驗證時間,責備領域仍然是空的。有沒有辦法讓它工作或可能的解決方法?在Gedmo Blameable字段上使用UniqueEntity

這裏是我的實體

/** 
* @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; 
} 

感謝

編輯:解

而不是手動設置的用戶(刪除Gedmo \ Blameable利益),我創建了自己的實體驗證。 我將它作爲參數賦予它的學說和標記存儲,以便它可以對db進行查詢,以便與當前連接的用戶驗證我的標準(稍後將由Gedmo \ Blameable使用)。

+0

原以爲這是外語_UniqueEntity Gedmo Blameable_ – AbraCadaver

回答

0

在Doctrine的刷新操作期間調用BlameableListener,這通常發生在實體驗證之後。這就是爲什麼在驗證時$authornull

最直接的解決方法是事先自己設置$author