_schemaTool->createSchema(array( $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC3343User'), $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC3343Group'), )); // Save a group and an associated user (in an extra lazy association) $group = new DDC3343Group(); $user = new DDC3343User(); $group->users->add($user); $this->_em->persist($group); $this->_em->persist($user); $this->_em->flush(); // Fetch the group and the user again and remove the user from the collection. $this->_em->clear(); $group = $this->_em->find(__NAMESPACE__ . '\DDC3343Group', $group->id); $user = $this->_em->find(__NAMESPACE__ . '\DDC3343User', $user->id); $group->users->removeElement($user); // Even though the collection is extra lazy, the user should not have been deleted. $this->_em->clear(); $user = $this->_em->find(__NAMESPACE__ . '\DDC3343User', $user->id); $this->assertInstanceOf(__NAMESPACE__ . '\DDC3343User', $user); } } /** * @Entity */ class DDC3343User { /** * @Id * @GeneratedValue * @Column(type="integer") */ public $id; /** * @ManyToOne(targetEntity="DDC3343Group", inversedBy="users") */ protected $group; } /** * @Entity */ class DDC3343Group { /** * @Id * @GeneratedValue * @Column(type="integer") */ public $id; /** * @OneToMany(targetEntity="DDC3343User", mappedBy="group", fetch="EXTRA_LAZY") */ public $users; public function __construct() { $this->users = new ArrayCollection(); } }