私はエンティティ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;