X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=vendor%2Fdoctrine%2Form%2Ftests%2FDoctrine%2FTests%2FORM%2FFunctional%2FTicket%2FDDC809Test.php;fp=vendor%2Fdoctrine%2Form%2Ftests%2FDoctrine%2FTests%2FORM%2FFunctional%2FTicket%2FDDC809Test.php;h=c586afac680009f938f2d30a5a59809f6eb33a2f;hb=8b04b2d11798dee4f3e1358e4f43e97a6df851f6;hp=0000000000000000000000000000000000000000;hpb=73568cf05a785a45f94ca3f2351d9e07bf917958;p=zf2.biz%2Fgalerie.git diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC809Test.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC809Test.php new file mode 100644 index 0000000..c586afa --- /dev/null +++ b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC809Test.php @@ -0,0 +1,109 @@ +_schemaTool->createSchema(array( + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC809Variant'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC809SpecificationValue') + )); + + $conn = $this->_em->getConnection(); + $conn->insert('specification_value_test', array('specification_value_id' => 94589)); + $conn->insert('specification_value_test', array('specification_value_id' => 94593)); + $conn->insert('specification_value_test', array('specification_value_id' => 94606)); + $conn->insert('specification_value_test', array('specification_value_id' => 94607)); + $conn->insert('specification_value_test', array('specification_value_id' => 94609)); + $conn->insert('specification_value_test', array('specification_value_id' => 94711)); + + $conn->insert('variant_test', array('variant_id' => 545208)); + $conn->insert('variant_test', array('variant_id' => 545209)); + + $conn->insert('var_spec_value_test', array('variant_id' => 545208, 'specification_value_id' => 94606)); + $conn->insert('var_spec_value_test', array('variant_id' => 545208, 'specification_value_id' => 94607)); + $conn->insert('var_spec_value_test', array('variant_id' => 545208, 'specification_value_id' => 94609)); + $conn->insert('var_spec_value_test', array('variant_id' => 545208, 'specification_value_id' => 94711)); + + $conn->insert('var_spec_value_test', array('variant_id' => 545209, 'specification_value_id' => 94589)); + $conn->insert('var_spec_value_test', array('variant_id' => 545209, 'specification_value_id' => 94593)); + $conn->insert('var_spec_value_test', array('variant_id' => 545209, 'specification_value_id' => 94606)); + $conn->insert('var_spec_value_test', array('variant_id' => 545209, 'specification_value_id' => 94607)); + } + + /** + * @group DDC-809 + */ + public function testIssue() + { + $result = $this->_em->createQueryBuilder() + ->select('Variant, SpecificationValue') + ->from('Doctrine\Tests\ORM\Functional\Ticket\DDC809Variant', 'Variant') + ->leftJoin('Variant.SpecificationValues', 'SpecificationValue') + ->getQuery() + ->getResult(); + + $this->assertEquals(4, count($result[0]->getSpecificationValues()), "Works in test-setup."); + $this->assertEquals(4, count($result[1]->getSpecificationValues()), "Only returns 2 in the case of the hydration bug."); + } +} + +/** + * @Table(name="variant_test") + * @Entity + */ +class DDC809Variant +{ + /** + * @Column(name="variant_id", type="integer") + * @Id + */ + protected $variantId; + + /** + * @ManyToMany(targetEntity="DDC809SpecificationValue", inversedBy="Variants") + * @JoinTable(name="var_spec_value_test", + * joinColumns={ + * @JoinColumn(name="variant_id", referencedColumnName="variant_id") + * }, + * inverseJoinColumns={ + * @JoinColumn(name="specification_value_id", referencedColumnName="specification_value_id") + * } + * ) + */ + protected $SpecificationValues; + + public function getSpecificationValues() + { + return $this->SpecificationValues; + } +} + +/** + * @Table(name="specification_value_test") + * @Entity + */ +class DDC809SpecificationValue +{ + /** + * @Column(name="specification_value_id", type="integer") + * @Id + */ + protected $specificationValueId; + + /** + * @var Variant + * + * @ManyToMany(targetEntity="DDC809Variant", mappedBy="SpecificationValues") + */ + protected $Variants; +}