读取 Doctrine 实体的元数据 属性
read metadata of a Doctrine entity property
我必须关注以下实体:
/**
* 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;
[...]
如何读取 $name 属性 的 "length" 值?我读到我可以使用学说元数据,但我没有找到任何关于如何使用它以及如何阅读这些数据的信息。
getClassMetadata( mixed $className ) Returns class
的 ORM 元数据描述符
例如
$metadata = $entityManager->getClassMetadata($className);
"class 名称必须是不带前导反斜杠的完全限定 class 名称(因为它由 get_class($obj) 返回)或别名 class 名字。
示例:MyProject\Domain\User sales:PriceRequest"
根据@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"
希望对您有所帮助
我必须关注以下实体:
/**
* 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;
[...]
如何读取 $name 属性 的 "length" 值?我读到我可以使用学说元数据,但我没有找到任何关于如何使用它以及如何阅读这些数据的信息。
getClassMetadata( mixed $className ) Returns class
的 ORM 元数据描述符例如
$metadata = $entityManager->getClassMetadata($className);
"class 名称必须是不带前导反斜杠的完全限定 class 名称(因为它由 get_class($obj) 返回)或别名 class 名字。 示例:MyProject\Domain\User sales:PriceRequest"
根据@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"
希望对您有所帮助