I am trying to add a dynamic table name for some of my objects.
I read this post [Dynamic names of tables / entities in Doctrine 2] [1] [1]: Dynamic names of tables / entities in Doctrine 2 , and this story about the doctrine listener [doctrinaire-listener] [2] [2]: http: //doctrine-orm.readthedocs.org/en/latest/reference/events.html
So here is how I do it:
I created an object with a wildcard in its table name:
<?php
namespace DD\MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
class SiteElec
{
I skip properties with getters and setters
}
Next, I performed a listen for this object:
<?php
namespace DD\MyBundle\Entity\Listener;
use DD\UserBundle\Entit\User;
use Doctrine\ORM\Event\LoadClassMetadataEventArgs;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class SiteElecListener {
private $_tableName = null;
protected $token_storage;
protected $user;
public function getTableName() {
return $this->_tableName;
}
public function setTableName($tableName) {
$this->_tableName = $tableName;
return $this;
}
public function __construct(TokenStorageInterface $token_storage) {
$this->token_storage = $token_storage;
if($token_storage->getToken() != null){
}
}
public function loadClassMetadata(LoadClassMetadataEventArgs $args) {
$classMetadata = $args->getClassMetadata();
$table = $classMetadata->table;
var_dump($classMetadata);
}
}
Next, I declare my listener in the configuration file:
dd.entity_listener.site_elec:
class: DD\MyBundle\Entity\Listener\SiteElecListener
arguments:
- "@security.token_storage"
tags:
- { name: doctrine.event_listener, event: loadClassMetadata }
If I look at $ classMetadata var , I only have my custom entity and related object, but not my SiteElec object
, , , , .
?