diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1400Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1400Test.php new file mode 100644 index 000000000..1639f98bd --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1400Test.php @@ -0,0 +1,136 @@ +_schemaTool->createSchema(array( + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1400Article'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1400User'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1400UserState'), + )); + } catch (\Exception $ignored) { + } + } + + public function testFailingCase() + { + $article = new DDC1400Article; + $user1 = new DDC1400User; + $user2 = new DDC1400User; + + $this->_em->persist($article); + $this->_em->persist($user1); + $this->_em->persist($user2); + $this->_em->flush(); + + $userState1 = new DDC1400UserState; + $userState1->article = $article; + $userState1->articleId = $article->id; + $userState1->user = $user1; + $userState1->userId = $user1->id; + + $userState2 = new DDC1400UserState; + $userState2->article = $article; + $userState2->articleId = $article->id; + $userState2->user = $user2; + $userState2->userId = $user2->id; + + $this->_em->persist($userState1); + $this->_em->persist($userState2); + + $this->_em->flush(); + $this->_em->clear(); + + $user1 = $this->_em->getReference(__NAMESPACE__.'\DDC1400User', $user1->id); + + $q = $this->_em->createQuery("SELECT a, s FROM ".__NAMESPACE__."\DDC1400Article a JOIN a.userStates s WITH s.user = :activeUser"); + $q->setParameter('activeUser', $user1); + $articles = $q->getResult(); + + var_dump(array_keys($articles[0]->userStates->toArray())); + + $this->_em->flush(); + var_dump($this->_sqlLoggerStack); + + + } +} + +/** + * @Entity + */ +class DDC1400Article +{ + /** + * @Id + * @Column(type="integer") + * @GeneratedValue + */ + public $id; + + /** + * @OneToMany(targetEntity="DDC1400UserState", mappedBy="article", indexBy="userId", fetch="EXTRA_LAZY") + */ + public $userStates; +} + +/** + * @Entity + */ +class DDC1400User +{ + + /** + * @Id + * @Column(type="integer") + * @GeneratedValue + */ + public $id; + + /** + * @OneToMany(targetEntity="DDC1400UserState", mappedBy="user", indexBy="articleId", fetch="EXTRA_LAZY") + */ + public $userStates; +} + +/** + * @Entity + */ +class DDC1400UserState +{ + + /** + * @Id + * @ManyToOne(targetEntity="DDC1400Article", inversedBy="userStates") + */ + public $article; + + /** + * @Id + * @ManyToOne(targetEntity="DDC1400User", inversedBy="userStates") + */ + public $user; + + /** + * @Column(name="user_id", type="integer") + */ + public $userId; + + /** + * @Column(name="article_id", type="integer") + */ + public $articleId; + +} \ No newline at end of file