diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC6613Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC6613Test.php new file mode 100644 index 000000000..30e4f5276 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC6613Test.php @@ -0,0 +1,127 @@ + + * Date: 11.08.2017 + * Time: 12:28 + */ + +namespace Doctrine\Tests\ORM\Functional\Ticket; + + +use Doctrine\DBAL\Schema\SchemaException; +use Doctrine\ORM\Mapping\Column; +use Doctrine\ORM\Mapping\Embeddable; +use Doctrine\ORM\Mapping\Entity; +use Doctrine\ORM\Mapping\Id; +use Doctrine\ORM\Mapping\GeneratedValue; +use Doctrine\ORM\Mapping\ManyToOne; +use Doctrine\ORM\PersistentCollection; +use Doctrine\ORM\Proxy\Proxy; +use Doctrine\Tests\Models\DDC6613\Phone; +use Doctrine\Tests\Models\DDC6613\User; + + +class DDC6613Test extends \Doctrine\Tests\OrmFunctionalTestCase +{ + + public function setUp() + { + parent::setUp(); + + try { + $this->setUpEntitySchema( + [ + DDC6613Phone::class, + DDC6613User::class + ] + ); + } catch (SchemaException $e) { + } + } + + public function testFail() + { + $user = new DDC6613User(); + $this->_em->persist($user); + $this->_em->flush(); + + $this->_em->clear(); + + /** @var User $user */ + $user = $this->_em->find(User::class, 1); + $phone1 = new DDC6613Phone(); + $phones = $user->phones; + $user->phones->add($phone1); + $this->_em->persist($phone1); + $this->_em->flush(); + + $phone2 = new DDC6613Phone(); + $user->phones->add($phone2); + $this->_em->persist($phone2); + + /* @var $phones PersistentCollection */ +// $phones = $user->phones; + + self::assertInstanceOf(PersistentCollection::class, $phones); + self::assertFalse($phones->isInitialized()); + + $phones->initialize(); + + self::assertTrue($phones->isInitialized()); + self::assertCount(2, $phones); + + $this->_em->flush(); + + self::assertFalse($phones->isDirty()); + self::assertTrue($phones->isInitialized()); + self::assertCount(2, $user->phones); + } + +} + +/** + * @Entity + * @Table(name="ddc6613_user") + */ +class DDC6613User +{ + /** + * @Id + * @GeneratedValue(strategy="NONE") + * @Column(type="string") + */ + private $id; + + /** + * @ManyToMany(targetEntity="Phone", fetch="LAZY", cascade={"remove", "detach"}) + */ + public $phones; + + public function __construct() + { + $this->id = uniqid('user', true); + $this->phones = new ArrayCollection(); + } + + +} + +/** + * @Table(name="ddc6613_phone") + */ +class DDC6613Phone +{ + + /** + * @Id + * @GeneratedValue(strategy="NONE") + * @Column(type="integer") + */ + public $id; + + public function __construct() + { + $this->id = uniqid('phone', true); + } +} \ No newline at end of file