读取Doctrine实体属性的元数据

VaN*_*VaN 16 php metadata properties symfony doctrine-orm

我必须遵循实体:

/**
 * ProductService
 *
 * @ORM\Table(name="sf_products_services")
 * @ORM\Entity(repositoryClass="Evo\BackendBundle\Entity\ProductServiceRepository")
 */
class ProductService
{
    [...]

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=150)
     */
    protected $name;

    [...]
Run Code Online (Sandbox Code Playgroud)

如何读取$ name属性的"length"值?我读过我可以使用doctrine元数据,但我没有找到任何关于如何使用它以及如何读取这些数据的信息.

Mat*_*teo 39

根据@wonde的答案,您可以通过Doctrine元数据信息阅读您需要的信息,如下所示:

    $doctrine = $this->getContainer()->get("doctrine");
    $em = $doctrine->getManager();

    $className = "Evo\BackendBundle\Entity\ProductService";

    $metadata = $em->getClassMetadata($className);

    $nameMetadata = $metadata->fieldMappings['name'];

    echo $nameMetadata['type'];  //print "string"
    echo $nameMetadata['length']; // print "150"
Run Code Online (Sandbox Code Playgroud)

希望这有帮助


小智 9

getClassMetadata(mixed $ className)返回类的ORM元数据描述符

例如

$metadata = $entityManager->getClassMetadata($className);
Run Code Online (Sandbox Code Playgroud)

"类名必须是完全限定的类名,没有前导反斜杠(因为它由get_class($ obj)返回)或别名类名.例如:MyProject\Domain\User sales:PriceRequest"