query foreign entitymanagerinterface symfony doctrine2

symfony - foreign - Obtener el nombre de la tabla de la clase de entidad



relation symfony (3)

Con Symfony 2.3 y Doctrine 2 esto funcionó para mí:

// my entity is called "Record" // Acme/DemoBundle/Entity/RecordRepository.php class RecordRepository extends EntityRepository { /** * Sets the primary table definition. The provided array supports the * following structure: * * name => <tableName> (optional, defaults to class name) * indexes => array of indexes (optional) * uniqueConstraints => array of constraints (optional) * * If a key is omitted, the current value is kept. * * @param array $table The table description. */ public function setDataTableName($tableInfo) { return $this->getEntityManager()->getClassMetadata(''AcmeDemoBundle:Record'')->setPrimaryTable($tableInfo); } }

¿Sabes cómo obtener el nombre de la tabla de una declaración de Entidad en mi clase de controlador

Clase de entidad

<?php namespace Acme/StoreBundle/Entity; use Doctrine/ORM/Mapping as ORM; use Doctrine/Common/Collections/ArrayCollection; use Symfony/Component/Validator/Constraints as Assert; /** * Acme/StoreBundle/Entity/User * * @ORM/Table(name="users") * @ORM/Entity */ class User

Ahora me gustaría obtener el nombre de la tabla de la entidad Usuario, ¿cómo lo haría en mi controlador Symfony2?


Desde dentro de un controlador usarías:

$em = $this->getDoctrine()->getManager(); $tableName = $em->getClassMetadata(''StoreBundle:User'')->getTableName();

Tenga en cuenta que el método getClassMetadata devuelve una gran cantidad de información interesante sobre la entidad.


Necesitaba encontrar el nombre de una tabla de mapeo en una relación de muchos a muchos (usando FOSUserBundle). Tal vez esto ayude a alguien:

$groupAssociation = $this->getEntityManager() ->getClassMetadata(''UOACLBundle:User'') ->getAssociationsByTargetClass(Group::class); // ''groups'' is the name of the property in my User Class $mappingTable = $groupAssociation[''groups''][''joinTable''][''name''];