Doctrine orm Symfony从字符串类声明中获取className对象
我有一段代码,返回第2行中声明的类名的列名:Doctrine orm Symfony从字符串类声明中获取className对象,doctrine-orm,symfony4,classname,Doctrine Orm,Symfony4,Classname,我有一段代码,返回第2行中声明的类名的列名: public function listColumns(EntityManagerInterface $em ) { $class = $em->getClassMetadata(Assure::class); $fields = []; if (!empty($class->discriminatorColumn)) { $fields[] = $class->discriminator
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;
}
我正在尝试将此函数设置为可参数化,以便在每次尝试获取其列的表/类名时都可以为其指定这是一种可能的解决方案,可以以不同的方式执行我想要的操作(提取表列名):
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();
}