我很难处理OneToMany关系,教义从不填充集合。
这是我的课程:
class User
{
...
/**
* @ORMOneToMany(targetEntity="AppBundleEntityPost", mappedBy="idUser", cascade={"all"})
*/
private $posts;
public function getPosts() {
return $this->posts;
}
public function __construct() {
$this->posts = new DoctrineCommonCollectionsArrayCollection();
}
...
}
class Post {
...
/**
* @var AppBundleEntityUser
*
* @ORMManyToOne(targetEntity="AppBundleEntityUser" , inversedBy="posts" , cascade={"all"})
* @ORMJoinColumns({
* @ORMJoinColumn(name="id_user", referencedColumnName="id")
* })
*/
private $idUser;
...
}
当我得到一个这样的用户对象时:
$user = $this->getDoctrine()
->getRepository('AppBundle:User')->find(1);
$user
已填充,但$posts
已null
另外,如果我这样做$user->getPosts()
它会返回null
为什么$posts
是空的? 它至少应该是一个array
我的数据库有一个链接到用户 1 的帖子
如果我对Post
做同样的事情,帖子会自动填充关联用户
感谢您的帮助
在你的帖子类中,你有:
public function setUser($user){
$user->addPost($this);
$this->user= $user;
}
可能你需要这样的东西。
在此之后编辑 2。
同样在用户类中,它应该是这样的:
private $posts = null;
...
/*
* Add posts to the array.
*/
public function addPost($post){
$this->stu_posts [] = $post;
}