2016-06-08 81 views
1

我很難與OneToMany關係,學說從不填充集合。學說2,OneToMany從不填充

這裏是我的課:

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 = $this->getDoctrine() 
     ->getRepository('AppBundle:User')->find(1); 

$user填充但$postsnull

另外,如果我做$user->getPosts()它的回報null

爲什麼$posts爲空?它應該是至少array

我的數據庫有一個帖子鏈接到用戶1

如果我做同樣的Post,後是自動填充的聯想用戶

感謝您的幫助

回答

0

在安置自己的類你有:

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; 
} 
+0

我加了,但仍然'posts'爲空 – sonique

+0

我更新我的職務。可能你沒有正確設置 - 檢查它,就像我指出的那樣。這應該工作。 –

+0

讓我知道你是否仍然有問題。 –