Имена динамических таблиц / сущностей в Doctrine 2
Я надеюсь, что кто-то может пролить свет на то, что происходит с моим кодом.
Мне нужно иметь сущность, которая представляет общую таблицу в качестве модели для таблиц с суффиксом X id. Например, у меня есть сущность: CustomerX Таблицы, которые мне нужно запросить: cusotmer_1, customer_2, customer_3 ... и т. Д.
Я в настоящее время использую:
class CustomerX {
/**
* CustomerX
*
* @Table(name="customer_")
* @Entity
*/
//..... properties and setters/getters....
private $_tableName = null;
public function getTableName() {
return $this->_tableName;
}
public function setTableName($tableName) {
$this->_tableName = $tableName;
return $this;
}
public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
{
$classMetadata = $eventArgs->getClassMetadata();
$table = $classMetadata->table;
$table['name'] = 'customer_'.$this->getTableName();
$classMetadata->setPrimaryTable($table);
}
public static function getCustomerRecords($CustomerId) {
$em = \Helper_Doctrine::em();
$custTable = new \ME\CustomerX();
$custTable->setTableName($CustomerId);
$evm = $em->getEventManager();
$evm->addEventListener(\Doctrine\ORM\Events::loadClassMetadata, $custTable);
//get the customer info
$query = $em->createQuery(
'SELECT w
FROM \ME\CustomerX w
WHERE w.customerId = :CustId';
$query->setParameter('CustId', $CustomerId);
$custParams = $query->getResult();
$evm->removeEventListener(\Doctrine\ORM\Events::loadClassMetadata, $custTable);
$em->flush();
return $custParams;
}
}
Таким образом, проблема в том, что я могу установить правильную настройку при первом запуске через получение клиента, но затем во второй раз sql, сгенерированный доктриной, заканчивается использованием первой таблицы, которую я создал.
Поэтому, если я сначала запустил: CustomerX :: getCustomerRecords ('123'), запускается sql, и когда я запускаю CustomerX :: getCustomerRecords ('987'), все еще используется 'customer_123'.
Я должен делать что-то не так. Если у кого-то есть какие-либо предложения о том, как правильно удалить или сбросить имя таблицы на что-то новое, это было бы здорово.
Благодарю.
Я изначально использовал это как ссылку.Программно изменить имя схемы таблицы в Doctrine2?