doutou3725 2017-03-18 15:05
浏览 60
已采纳

Doctrine Trait覆盖OneToMany关系

I have trait which looks like this

trait CommentableTrait
{
    /**
     * @OneToMany(targetEntity="Comment", mappeBy="to_override")
     *
     */
    protected $comments;
}

In the Comment.php I have ManyToOne relation

class Comment
{
    /**
     * @ManyToOne(targetEntity="Article", inversedBy="comments")
     */
    protected $article;

    /**
     * @ManyToOne(targetEntity="Page", inversedBy="comments")
     */
    protected $page;

     /**
     * @ManyToOne(targetEntity="Page", inversedBy="comments")
     */
    protected $question;

} 

I want to use this trait in my entities Article.php, Page.php, Quesion.php like this:

class Article
{
    use CommentableTrait;
}

I need to override mappedBy in CommenatableTrait.

I've tried the solution from Doctrine - Override Field Association Mappings In Subclasses

It works with OneToOne and ManyToMany relations but I couldn't find a working example for bi-directional OneToMany - ManyToOne relations. Is there a way to do it?

  • 写回答

1条回答 默认 最新

  • dpjtn48868 2017-03-18 22:02
    关注

    You can use trait within a class and override relation there. For example:

    class Article
    {
        use CommentableTrait;
    
        /**
         * @See CommentableTrait
         * @OneToMany(targetEntity="Comment", mappeBy="article")
         *
         */
         $comments      
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?