DDC1040Test.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace Doctrine\Tests\ORM\Functional\Ticket;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\Tests\Models\CMS\CmsArticle;
  5. use Doctrine\Tests\Models\CMS\CmsUser;
  6. require_once __DIR__ . '/../../../TestInit.php';
  7. /**
  8. * @group DDC-1040
  9. */
  10. class DDC1040Test extends \Doctrine\Tests\OrmFunctionalTestCase
  11. {
  12. public function setUp()
  13. {
  14. $this->useModelSet('cms');
  15. parent::setUp();
  16. }
  17. public function testReuseNamedEntityParameter()
  18. {
  19. $user = new CmsUser();
  20. $user->name = "John Galt";
  21. $user->username = "jgalt";
  22. $user->status = "inactive";
  23. $article = new CmsArticle();
  24. $article->topic = "This is John Galt speaking!";
  25. $article->text = "Yadda Yadda!";
  26. $article->setAuthor($user);
  27. $this->_em->persist($user);
  28. $this->_em->persist($article);
  29. $this->_em->flush();
  30. $dql = "SELECT a FROM Doctrine\Tests\Models\CMS\CmsArticle a WHERE a.user = :author";
  31. $this->_em->createQuery($dql)
  32. ->setParameter('author', $user)
  33. ->getResult();
  34. $dql = "SELECT a FROM Doctrine\Tests\Models\CMS\CmsArticle a WHERE a.user = :author AND a.user = :author";
  35. $this->_em->createQuery($dql)
  36. ->setParameter('author', $user)
  37. ->getResult();
  38. $dql = "SELECT a FROM Doctrine\Tests\Models\CMS\CmsArticle a WHERE a.topic = :topic AND a.user = :author AND a.user = :author";
  39. $farticle = $this->_em->createQuery($dql)
  40. ->setParameter('author', $user)
  41. ->setParameter('topic', 'This is John Galt speaking!')
  42. ->getSingleResult();
  43. $this->assertSame($article, $farticle);
  44. }
  45. public function testUseMultiplePositionalParameters()
  46. {
  47. $user = new CmsUser();
  48. $user->name = "John Galt";
  49. $user->username = "jgalt";
  50. $user->status = "inactive";
  51. $article = new CmsArticle();
  52. $article->topic = "This is John Galt speaking!";
  53. $article->text = "Yadda Yadda!";
  54. $article->setAuthor($user);
  55. $this->_em->persist($user);
  56. $this->_em->persist($article);
  57. $this->_em->flush();
  58. $dql = "SELECT a FROM Doctrine\Tests\Models\CMS\CmsArticle a WHERE a.topic = ?1 AND a.user = ?2 AND a.user = ?3";
  59. $farticle = $this->_em->createQuery($dql)
  60. ->setParameter(1, 'This is John Galt speaking!')
  61. ->setParameter(2, $user)
  62. ->setParameter(3, $user)
  63. ->getSingleResult();
  64. $this->assertSame($article, $farticle);
  65. }
  66. }