1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
<?php
declare(strict_types=1);
namespace Doctrine\Tests\ORM\Mapping;
use Doctrine\ORM\Event\LoadClassMetadataEventArgs;
use Doctrine\ORM\Events;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\PropertyAccessors\PropertyAccessor;
use Doctrine\ORM\Mapping\Table;
use Doctrine\Tests\OrmTestCase;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\Attributes\RequiresPhpunit;
class ClassMetadataLoadEventTest extends OrmTestCase
{
#[Group('DDC-1610')]
#[RequiresPhpunit('< 12')]
public function testEvent(): void
{
$em = $this->getTestEntityManager();
$metadataFactory = $em->getMetadataFactory();
$evm = $em->getEventManager();
$evm->addEventListener(Events::loadClassMetadata, $this);
$classMetadata = $metadataFactory->getMetadataFor(LoadEventTestEntity::class);
self::assertTrue($classMetadata->hasField('about'));
self::assertArrayHasKey('about', $classMetadata->propertyAccessors);
self::assertInstanceOf(PropertyAccessor::class, $classMetadata->propertyAccessors['about']);
}
public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs): void
{
$classMetadata = $eventArgs->getClassMetadata();
$field = [
'fieldName' => 'about',
'type' => 'string',
'length' => 255,
];
$classMetadata->mapField($field);
}
}
#[Table(name: 'load_event_test_entity')]
#[Entity]
class LoadEventTestEntity
{
#[Id]
#[Column(type: 'integer')]
#[GeneratedValue(strategy: 'AUTO')]
private int $id;
#[Column(type: 'string', length: 255)]
private string $name;
/** @var mixed */
private $about;
}
|