2016-06-08 3 views
1

У меня тяжелое время с отношением OneToMany, Doctrine никогда не заполняет коллекцию.Doctrine 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 заселена, но $posts является null

Кроме того, если я $user->getPosts() его возвращение null

Почему $posts null? она должна быть по крайней мере array

Мой DB имеет сообщение связано с пользователем 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

Сообщите мне, если у вас все еще есть проблемы. –

Смежные вопросы