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''];