【问题标题】:Symfony get className object from String class declarationSymfony 从 String 类声明中获取 className 对象
【发布时间】: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;
}

我正在尝试使此函数可参数化,以便每次我尝试获取其列的表/类名时都可以给出它

【问题讨论】:

    标签: doctrine-orm symfony4 classname


    【解决方案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();
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2011-11-13
      • 1970-01-01
      • 2017-01-01
      • 2022-06-10
      • 2013-10-12
      • 2022-01-04
      相关资源
      最近更新 更多