学说2,OneToMany从未填充过

时间:2016-06-08 00:05:17

标签: php doctrine-orm one-to-many symfony

我很难与OneToMany关系,Doctrine永远不会填充Collection。

这是我的课程:

class User
{
    ...
    /**
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\Post", mappedBy="idUser", cascade={"all"})
     */
    private $posts;

    public function getPosts() {
       return $this->posts;
    }

    public function __construct() {
        $this->posts = new \Doctrine\Common\Collections\ArrayCollection();
    }
    ...
}


class Post {
    ...
    /**
     * @var \AppBundle\Entity\User
     *
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User" , inversedBy="posts" , cascade={"all"})
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_user", referencedColumnName="id")
     * })
     */
    private $idUser;
    ...
}

当我得到这样的User对象时:

$user = $this->getDoctrine()
        ->getRepository('AppBundle:User')->find(1);
已填充

$user,但$postsnull

如果我$user->getPosts(),则会返回null

为什么$posts为空?它至少应该是array

我的数据库有一个链接到用户1的帖子

如果我对Post执行相同操作,则会使用关联用户

自动填充帖子

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在你的Post课程中你有:

public function setUser($user){
    $user->addPost($this);
    $this->user= $user;
}

可能你需要这样的东西。

在此之后编辑2.

同样在User类中,它应该是这样的:

private $posts = null;
...
/*
 * Add posts to the array.
 */
public function addPost($post){
    $this->stu_posts [] = $post;
}