当前位置: 首页 > 知识库问答 >
问题:

symfony条令查询生成器到数组结果

司徒炎彬
2023-03-14

我想从学说查询得到数组。我有自我参照实体

应用程序\实体\AccessModom

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\AccessModule", inversedBy="children")
 * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", nullable=true)
 */
private $parent;

/**
 * @ORM\OneToMany(targetEntity="App\Entity\AccessModule", mappedBy="parent", fetch="EAGER")
 * @Serializer\MaxDepth(2)
 */
private $children;


/**
 * AccessModule constructor.
 */
public function __construct()
{
    $this->children = new ArrayCollection();
}

在此存储库中

应用程序\实体\AccessModuleRepository

 public function findAllArray()
{
    return $this->createQueryBuilder('a')
        ->getQuery()
        ->getResult();
}

这种返回与子级和父级对象的匹配。但是当我想把这个查询作为数组-

退还$this-

array:3 [▼
 0 => array:2 [▼
   "id" => 2
   "name" => "Common module"
  ]
  1 => array:2 [▼
    "id" => 3
    "name" => "User Module"
 ]
 2 => array:2 [▼
    "id" => 4
    "name" => "Admin Module"
  ]
]

退还$this-

  array:3 [▼
  0 => AccessModule {#5118 ▼
    -id: 2
    -name: "Common module"
    -parent: null
    -children: PersistentCollection {#5208 ▼
      -snapshot: array:2 [ …2]
      -owner: AccessModule {#5118}
      -association: array:15 [ …15]
      -em: EntityManager {#2624 …11}
      -backRefFieldName: "parent"
      -typeClass: ClassMetadata {#3093 …}
      -isDirty: false
      #collection: ArrayCollection {#5209 ▼
        -elements: array:2 [▼
          0 => AccessModule {#5325 ▼
            -id: 3
            -name: "User Module"
            -parent: AccessModule {#5118}
            -children: PersistentCollection {#5327 ▶}
          }
          1 => AccessModule {#5328 ▼
            -id: 4
            -name: "Admin Module"
            -parent: AccessModule {#5118}
            -children: PersistentCollection {#5330 ▶}
          }
        ]
      }
      #initialized: true
    }
  }
  1 => AccessModule {#5325 ▶}
  2 => AccessModule {#5328 ▶}
]

如何获得数组从getResult()与引用对象?

预期结果

[
 [0] => [
    'id' => 1,
    'name' => 'Common Module',
    'parent' => null,
    'children => [
        [0] => [
            'id' => 2,
            'name' => 'User Module',
            'parent' => 1,
            'children' => []
            ],
        [1] => [
            'id' => 3,
            'name' => 'Admin Module',
            'parent' => 1,
            'children' => []
            ]
        ]
    ],
 [1] => [
    'id' => 2,
    'name' => 'User Module',
    'parent' => 1,
    'children' => []
    ],
 [2] => [
    'id' => 3,
    'name' => 'Admin Module',
    'parent' => 1,
    'children' => []
    ]
]

共有2个答案

尤钱明
2023-03-14

教义数组层次结构

如果希望将嵌套的集合层次结构分解为数组而不是对象,可以使用hydration\u ARRAY\u hierarchy常量。它与hydroe\u RECORD\u层次结构相同,只是它使用PHP数组而不是对象。

http://doctrine.readthedocs.io/en/latest/en/manual/data-hydrators.html#nested-设置数组层次结构

public function findAllArray()
{
    return $this->createQueryBuilder('a')
        ->getQuery()
        ->execute(array(), Doctrine_Core::HYDRATE_ARRAY_HIERARCHY);;
}
姚阳德
2023-03-14

可以使用可选参数调用getResult方法:

return $this->createQueryBuilder('a')
    ->getQuery()
    ->getResult(Query::HYDRATE_ARRAY);
 类似资料:
  • 有几种不同方法可以生成查询结果: 结果数组 结果行 自定义结果对象 结果辅助方法 Class Reference 结果数组 result() 方法 该方法以**对象数组**形式返回查询结果,如果查询失败返回**空数组**。 一般情况下,你会像下面这样在一个 foreach 循环中使用它: $query = $this->db->query("YOUR QUERY"); foreach ($que

  • 我有一个问题,使laravel查询: 我想举个例子: 我有这个但不起作用:

  • 问题内容: 我有两个通过1:1关系连接的实体,例如: 我想创建一个Doctrine查询,在其中我可以根据中某个列的值检索数据。像这样的东西(当然不起作用): 任何帮助将非常感激 :) 问题答案: 左连接在这里也没有意义(因为where子句将使它像内部连接一样工作)

  • 我正在使用Laravels查询生成器检索带有一些筛选选项的项目列表-我需要在此查询中进行计数: 计算“Freestyle ID”在likes表中出现的次数。 这有可能吗?返回的数据是完美的,我只需要一个自由泳的喜欢量,其中喜欢表中的自由泳ID为空。

  • 我有一个名为的实体,另一个名为。 这就是它们之间的关系: 这是“我的存储库”实体中的查询,用于恢复具有一点Comptage属性的Computer: 问题是我很好地恢复了所选点comptage的computer,但只恢复了具有参数确定关系的computer。 在我的数据库中,有可能竞争对手没有参数化的梅苏尔数据。 我如何恢复没有参数的计算机程序和具有参数的计算机程序(在同一个queryBuilder

  • 我想不出如何使用TypeOrm查询生成器编写以下MySql语句 从farm.reg中选择reg.id,其中grpId=“abc”; 这个选择返回的只是ID的,但我的查询生成器返回的是整个对象。 现在,我在我的NestJs服务中有这个函数,但我需要使用'map',我不想… 谢谢