2017-05-15 14 views
0

私はエンティティuser、postable、comment、post、threadを持っています。コメント、投稿、およびスレッド使用可能クラステーブルの継承が可能です。だから、投稿可能な各エンティティは所有者、好きな人、レポートなどを持っています。Symfony 3クラステーブルの継承への関連Doctrine orm 2

私が達成しようとしている最終目標は、user-> getPosts()、user-> getThreads() 、user-> getComments()。しかし、私は

マッピングOnlineMovementBundle \エンティティ\ユーザー#のポストマッピングエラーを取得し、OnlineMovementBundle \エンティティ\ポスト#の所有者が相互に矛盾しているので、私のORMマッピングの設定を修正する必要があります。

OnlineMovementBundle \ Entity \ User#threadsとOnlineMovementBundle \ Entity \ Thread#ownerのマッピングが互いに矛盾しています。

ユーザー

class User extends BaseUser 
{ 
/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Postable", mappedBy="owner", cascade={"persist"}, orphanRemoval=true) 
*/ 
private $postables; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Post", mappedBy="owner", cascade={"persist"}, orphanRemoval=true) 
*/ 
private $posts; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Thread", mappedBy="owner", cascade={"persist"}, orphanRemoval=true) 
*/ 
private $threads; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Thread", mappedBy="owner", cascade={"persist"}, orphanRemoval=true) 
*/ 
private $comments; 

投稿可能

/** 
* Postable 
* 
* @ORM\Table(name="postable") 
* @ORM\InheritanceType("JOINED") 
* @ORM\DiscriminatorColumn(name="type", type="string") 
* @ORM\DiscriminatorMap({ 
* "postable" = "Postable", 
* "post" = "Post", 
* "thread" = "Thread", 
* "comment" = "Comment" 
* }) 
* @ORM\Entity(repositoryClass="OnlineMovementBundle\Repository\PostableRepository") 
*/ 
class Postable 
{ 
/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\ManyToOne(targetEntity="Movement", inversedBy="postables", cascade={"persist"}) 
*/ 
private $movement; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\ManyToOne(targetEntity="User", inversedBy="postables", cascade={"persist"}) 
*/ 
private $owner; 

/** 
* @var string 
* 
* @ORM\Column(name="comment", type="string", length=2056) 
*/ 
private $comment; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Report", mappedBy="postable", cascade={"persist"}, orphanRemoval=true) 
*/ 
private $reports; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Bump", mappedBy="postable", cascade={"persist"}, orphanRemoval=true) 
*/ 
private $bumps; 

/** 
* @var \DateTime 
* 
* @ORM\Column(name="date_created", type="datetime") 
*/ 
private $dateCreated; 

ポスト

class Post extends Postable 
{ 
/** 
* @var string 
* 
* @Assert\Image(
*  mimeTypes = {"image/jpeg", "image/gif", "image/png" }, 
*  mimeTypesMessage = "upload a jpeg, png, or gif file" 
*) 
* 
* @ORM\Column(name="content", type="string", length=1024, nullable=true) 
*/ 
private $content; 

/** 
* @var string 
* 
* @ORM\Column(name="title", type="string", length=128) 
*/ 
private $title; 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Comment", mappedBy="movement", cascade={"persist"}, orphanRemoval=true) 
*/ 
private $comments; 

コメント

class Comment extends Postable 
{ 
/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\ManyToOne(targetEntity="Post", inversedBy="comments", cascade={"persist"}) 
*/ 
private $post; 

スレッドあなたはidを持つ親をマッピングすることはできません

class Thread extends Postable 
{ 

/** 
* @var \Doctrine\Common\Collections\Collection 
* 
* @ORM\OneToMany(targetEntity="Thread", mappedBy="parent", cascade={"persist"}, orphanRemoval=true) 
*/ 
private $children; 

/** 
* @var Thread 
* 
* @ORM\ManyToOne(targetEntity="Thread", inversedBy="children", cascade={"persist"}) 
*/ 
private $parent; 

答えて

0

、あなたは良い練習かもしれ子のそれぞれのアーキテクチャになる抽象クラスとしてそれを作ることができます。

あなたの主な間違いは、親クラスのID定義であり、あなたのアクセサは保護された(非公開ではない)と宣言されている必要があります

関連する問題