Łukasz D. Tulikowski
Łukasz D. Tulikowski

Reputation: 1503

Doctrine Trait override OneToMany relation

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?

Upvotes: 1

Views: 1230

Answers (1)

user7733223
user7733223

Reputation:

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      
}

Upvotes: 1

Related Questions