Symfony 从 String 类声明中获取 className 对象
Posted
技术标签:
【中文标题】Symfony 从 String 类声明中获取 className 对象【英文标题】:Symfony get className object from String class declaration 【发布时间】:2021-07-24 22:16:59 【问题描述】:我有这段代码返回第二行中声明的 className 的列名:
public function listColumns(EntityManagerInterface $em )
$class = $em->getClassMetadata(Assure::class);
$fields = [];
if (!empty($class->discriminatorColumn))
$fields[] = $class->discriminatorColumn['name'];
$fields = array_merge($class->getColumnNames(), $fields);
foreach ($fields as $index => $field)
if ($class->isInheritedField($field))
unset($fields[$index]);
foreach ($class->getAssociationMappings() as $name => $relation)
if (!$class->isInheritedAssociation($name))
foreach ($relation['joinColumns'] as $joinColumn)
$fields[] = $joinColumn['name'];
return $fields;
我正在尝试使此函数可参数化,以便每次我尝试获取其列的表/类名时都可以给出它
【问题讨论】:
【参考方案1】:这是一种可能的解决方案,可以不同地执行我想要的操作(提取表列名称):
public function listColumns2(EntityManagerInterface $em )
$conn = $this->getEntityManager()->getConnection();
$sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =
N'Assure' ";
$stmt = $conn->prepare($sql);
$stmt->execute();
return $stmt->fetchAllAssociative();
【讨论】:
以上是关于Symfony 从 String 类声明中获取 className 对象的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 4,从自定义类(不是控制器类)获取项目的根路径