Mysql
 sql >> Base de données >  >> RDS >> Mysql

Noms de tables/entités dynamiques dans Doctrine 2

La question est ancienne, mais elle peut être utile à quelqu'un.

Si loadClassMetada est appelé à chaque fois, il semble que ce problème se trouve dans votre code.Mais, je suppose, que les métadonnées sont mises en cache par doctrine.Dans ce cas, vous pouvez les modifier directement, veuillez regarder l'extrait de code suivant, cela devrait fonctionner :

<?php
class FooController extends Controller {
  function fooAction() {
    $em = $this->getDoctrine()->getEntityManager();
    $cm = $em->getClassMetadata('FooBundle:FooEntity');
    $cm->setTableName('special_table_name');
    $repo = $em->getRepository('FooBundle:FooEntity');
    $entities = $repo->createQueryBuilder('f')
            ->setMaxResults(1)
            ->orderBy('f.id', 'desc')
            ->getQuery()
            ->getResult();
    return new Response('');
  }
}