_schemaTool->createSchema([$this->_em->getClassMetadata(DDC5684Object::class)]); } protected function tearDown() { $this->_schemaTool->dropSchema([$this->_em->getClassMetadata(DDC5684Object::class)]); parent::tearDown(); } public function testAutoIncrementIdWithCustomType() { $object = new DDC5684Object(); $this->_em->persist($object); $this->_em->flush(); $this->assertInstanceOf(DDC5684ObjectId::class, $object->id); } public function testFetchObjectWithAutoIncrementedCustomType() { $object = new DDC5684Object(); $this->_em->persist($object); $this->_em->flush(); $this->_em->clear(); $rawId = $object->id->value; $object = $this->_em->find(DDC5684Object::class, new DDC5684ObjectId($rawId)); $this->assertInstanceOf(DDC5684ObjectId::class, $object->id); $this->assertEquals($rawId, $object->id->value); } } class DDC5684ObjectIdType extends DBALTypes\IntegerType { public function convertToPHPValue($value, AbstractPlatform $platform) { return new DDC5684ObjectId($value); } public function convertToDatabaseValue($value, AbstractPlatform $platform) { return $value->value; } public function getName() { return self::class; } public function requiresSQLCommentHint(AbstractPlatform $platform) { return true; } } class DDC5684ObjectId { public $value; public function __construct($value) { $this->value = $value; } public function __toString() { return (string) $this->value; } } /** * @Entity * @Table(name="ticket_5684_objects") */ class DDC5684Object { /** * @Id * @Column(type=Doctrine\Tests\ORM\Functional\Ticket\DDC5684ObjectIdType::class) * @GeneratedValue(strategy="AUTO") */ public $id; }