微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Symfony 从 String 类声明中获取 className 对象

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

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

解决方法

这是一个可能的解决方案,以不同的方式做我想做的事情(提取表列名):

   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();
   }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。