我很难与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
,但$posts
为null
如果我$user->getPosts()
,则会返回null
为什么$posts
为空?它至少应该是array
我的数据库有一个链接到用户1的帖子
如果我对Post
执行相同操作,则会使用关联用户
感谢您的帮助
答案 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;
}