Ладно, похоже, у меня есть решение.
Вероятно, лучший способ - создать собственный ClassMetadataFactory , расширенный с \ Doctrine \ ORM \ Mapping \ ClassMetadataFactory и создайте EntityManager с помощью этого ClassMetadataFactory.
<?php
/**
* Implementation of Doctrine's metadata factory class for A/B testing
*/
class ClassMetadataFactory extends \Doctrine\ORM\Mapping\ClassMetadataFactory
{
/**
* Gets the class metadata descriptor for a class.
*
* @param string $className The name of the class.
* @return Doctrine\ORM\Mapping\ClassMetadata
*/
public function getMetadataFor($className)
{
$metadata = parent::getMetadataFor($className);
if ($className === 'Advertisement' || $className === '\Advertisement') {
$metadata->fieldMappings['score']['columnName'] = 'score2';
$metadata->fieldNames['score'] = 'score2';
$metadata->columnNames['score'] = 'score2';
}
return $metadata;
}
}
Еще одна вещь, о которой вы должны знать, это DQL-кеш Doctrine!
Это довольно глупый пример.Следующим шагом может быть настройка A / B-тестирования и некоторых коммутаторов, отвечающих за вариант решения, но это не входит в тему моего вопроса выше.