Php Doctrine2实体问题

Php Doctrine2实体问题,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有以下问题。我正在使用Symfony2。在我的程序中,我使用了两个类:Users和Posts。我的Post实体有一个名为uploader(用户对象)的属性 当我尝试插入新的Post时,问题就出现了。出于某种原因,它不会插入一个新的Post对象,该对象与会话中登录的User对象相同,而是在数据库中插入一个新的User对象,并使用该用户id设置新的Post对象 下面是一些代码示例: /** * Posts * * @ORM\Table(name="posts") * @ORM\En

我有以下问题。我正在使用Symfony2。在我的程序中,我使用了两个类:
Users
Posts
。我的
Post
实体有一个名为
uploader(用户对象)
的属性

当我尝试插入新的
Post
时,问题就出现了。出于某种原因,它不会插入一个新的
Post
对象,该对象与会话中登录的
User
对象相同,而是在数据库中插入一个新的
User
对象,并使用该用户id设置新的
Post
对象

下面是一些代码示例:

/**
  * Posts
  *
  * @ORM\Table(name="posts")
  * @ORM\Entity(repositoryClass="Main\ClientBundle\Entity\PostsRepository")
  */
class Posts {
    /**
     * @var \Users
     *
     * @ORM\ManyToOne(targetEntity="Users",cascade={"persist"})
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="uploader", referencedColumnName="id")
     * })
     */
    private $uploader;

    /**
     * Set uploader
     *
     * @param \Main\ClientBundle\Entity\Users $uploader
     * @return Posts
     */
    public function setUploader(\Main\ClientBundle\Entity\Users $uploader = null)
    {
        $this->uploader = $uploader;

        return $this;
    }
}
这是将新的
Post
插入数据库的代码:

$post = new Posts();
$post->setType(0);
$post->setDate(new \DateTime());
$post->setTitle($postTitle);
$post->setSafeForWork($isSafe);

$session = $this->getRequest()->getSession();
$post->setUploader($session->get('user'));
$post->setImage($hashFileName);

$em = $this->getDoctrine()->getManager();
$em->persist($post);
$em->flush();

正如您所看到的,用户是从会话中获取的。为什么这段代码会创建一个新的
用户
实例?

您应该使用这样的代码

posts.php

/**
     * @ORM\ManyToOne(targetEntity="Users", inversedBy="posts")
     * @ORM\JoinColumn(name="uploader_id", referencedColumnName="id")
     **/
    protected $uploader;
 /**
     * @ORM\OneToMany(targetEntity="Posts", mappedBy="uploader")
     **/
    protected $posts;
Users.php中

/**
     * @ORM\ManyToOne(targetEntity="Users", inversedBy="posts")
     * @ORM\JoinColumn(name="uploader_id", referencedColumnName="id")
     **/
    protected $uploader;
 /**
     * @ORM\OneToMany(targetEntity="Posts", mappedBy="uploader")
     **/
    protected $posts;

我想您不需要在那里级联

也可以粘贴
用户
类的相关部分吗?您是否尝试过从数据库而不是会话中检索用户?很可能EntityManager没有管理用户实体,所以它将其视为一个新实体。