Addresses = new \Doctrine\Common\Collections\ArrayCollection(); } public function getId() { return $this->id; } public function getAddresses() { return $this->Addresses; } public function setAddresses(ArrayCollection $value) { $this->Addresses = $value; } } /** * @Entity * @Table(name="address") */ class Address { /** * @Id * @Column(name="id", type="integer") * @GeneratedValue(strategy="AUTO") */ protected $id; /** * @Column(name="addresse", type="string") */ public $address; /** * @ManyToOne(targetEntity="Entity\User") * @JoinColumn(name="userId", referencedColumnName="id") */ protected $User; public function getId() { return $this->id; } public function setUser(User $user) { $this->User = $user; } public function getUser() { return $this->User; } } ## Test code $em = EntityManager::create($connectionOptions, $config); $id = 32; // User 32 exists and has addresses (previous run of this script!) /* $user = new \Entity\User; $user->name = 'Bob'; $em->persist($user); $em->flush(); $address = new \Entity\Address; $address->address = 'Streetname....'; $address->setUser($user); $em->persist($address); $em->flush(); $user->getAddresses()->add($address); $em->flush(); $id = $user->getId() */ $u = $em->find('Entity\User', $id); $addresses = $u->getAddresses(); @@foreach ($addresses as $a) { } // This line breaks!