Symfony 从 String 类声明中获取 className 对象

问题描述 投票:0回答:1

我有这段代码,它返回第二行中声明的 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;
}

我正在尝试使这个函数可参数化,这样我每次尝试获取其列时都可以给它哪个表/类名

php doctrine-orm symfony4 classname
1个回答
0
投票

这是一种可能的解决方案,可以以不同的方式执行我想要的操作(提取表列名称):

   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();
   }
© www.soinside.com 2019 - 2024. All rights reserved.