Mysql
 sql >> Database >  >> RDS >> Mysql

Nomi dinamici di tabelle/entità in Dottrina 2

La domanda è vecchia, ma può essere utile per qualcuno.

Se loadClassMetada viene chiamato ogni volta, sembra che il problema sia nel tuo codice. Ma, suppongo, che i metadati siano memorizzati nella cache dalla dottrina. In tal caso puoi cambiarlo direttamente, guarda il seguente frammento di codice, dovrebbe funzionare:

<?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('');
  }
}