gpt4 book ai didi

Symfony 从数据库表中获取所有字段名称

转载 作者:行者123 更新时间:2023-12-02 18:45:14 25 4
gpt4 key购买 nike

我需要获取所有数据库表字段名称。我已经尝试过使用 ClassMetadata 来获得它不幸的是getColumnNames()不返回关系字段名称。和方法getAssociationNames()返回实体属性的名称,这些名称不相同,并且在使用 oneToMany 时还可能包含数据库中并不真正存在的字段关系。

正如人们提到的,这可能是重复的。它不是。 Getting column names in a doctrine2 entity这可能是一个类似的问题,但是 getFieldNames方法不返回与其他实体有关系的字段名称。

那么如何从数据库表中获取所有列名称?

最佳答案

我用这段代码解决了这个问题:

$class = $this->em->getClassMetadata('Entity');
$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;

关于Symfony 从数据库表中获取所有字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31827554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com