nic*_*ram 2 doctrine query-builder symfony
我想从学说查询中获取数组。\n我有自引用实体
\n\n应用程序\实体\访问模块
\n\n/**\n * @ORM\\ManyToOne(targetEntity="App\\Entity\\AccessModule", inversedBy="children")\n * @ORM\\JoinColumn(name="parent_id", referencedColumnName="id", nullable=true)\n */\nprivate $parent;\n\n/**\n * @ORM\\OneToMany(targetEntity="App\\Entity\\AccessModule", mappedBy="parent", fetch="EAGER")\n * @Serializer\\MaxDepth(2)\n */\nprivate $children;\n\n\n/**\n * AccessModule constructor.\n */\npublic function __construct()\n{\n $this->children = new ArrayCollection();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n在这个存储库中
\n\n应用程序\\实体\\AccessModuleRepository
\n\n public function findAllArray()\n{\n return $this->createQueryBuilder(\'a\')\n ->getQuery()\n ->getResult();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这返回具有子级和父级的对象的集合。但是,当我想将此查询作为数组获取时,->getArrayResult()我仅获取包含“id”和“name”的数组,而没有子数组“children”和“parent”。
返回 $this->createQueryBuilder(\'a\')->getQuery()->getArrayResult();
\n\narray:3 [\xe2\x96\xbc\n 0 => array:2 [\xe2\x96\xbc\n "id" => 2\n "name" => "Common module"\n ]\n 1 => array:2 [\xe2\x96\xbc\n "id" => 3\n "name" => "User Module"\n ]\n 2 => array:2 [\xe2\x96\xbc\n "id" => 4\n "name" => "Admin Module"\n ]\n]\nRun Code Online (Sandbox Code Playgroud)\n\n返回 $this->createQueryBuilder(\'a\')->getQuery()->getResult();
\n\n array:3 [\xe2\x96\xbc\n 0 => AccessModule {#5118 \xe2\x96\xbc\n -id: 2\n -name: "Common module"\n -parent: null\n -children: PersistentCollection {#5208 \xe2\x96\xbc\n -snapshot: array:2 [ \xe2\x80\xa62]\n -owner: AccessModule {#5118}\n -association: array:15 [ \xe2\x80\xa615]\n -em: EntityManager {#2624 \xe2\x80\xa611}\n -backRefFieldName: "parent"\n -typeClass: ClassMetadata {#3093 \xe2\x80\xa6}\n -isDirty: false\n #collection: ArrayCollection {#5209 \xe2\x96\xbc\n -elements: array:2 [\xe2\x96\xbc\n 0 => AccessModule {#5325 \xe2\x96\xbc\n -id: 3\n -name: "User Module"\n -parent: AccessModule {#5118}\n -children: PersistentCollection {#5327 \xe2\x96\xb6}\n }\n 1 => AccessModule {#5328 \xe2\x96\xbc\n -id: 4\n -name: "Admin Module"\n -parent: AccessModule {#5118}\n -children: PersistentCollection {#5330 \xe2\x96\xb6}\n }\n ]\n }\n #initialized: true\n }\n }\n 1 => AccessModule {#5325 \xe2\x96\xb6}\n 2 => AccessModule {#5328 \xe2\x96\xb6}\n]\nRun Code Online (Sandbox Code Playgroud)\n\n如何通过引用对象从 getResult() 获取数组?
\n\n预期结果
\n\n[\n [0] => [\n \'id\' => 1,\n \'name\' => \'Common Module\',\n \'parent\' => null,\n \'children => [\n [0] => [\n \'id\' => 2,\n \'name\' => \'User Module\',\n \'parent\' => 1,\n \'children\' => []\n ],\n [1] => [\n \'id\' => 3,\n \'name\' => \'Admin Module\',\n \'parent\' => 1,\n \'children\' => []\n ]\n ]\n ],\n [1] => [\n \'id\' => 2,\n \'name\' => \'User Module\',\n \'parent\' => 1,\n \'children\' => []\n ],\n [2] => [\n \'id\' => 3,\n \'name\' => \'Admin Module\',\n \'parent\' => 1,\n \'children\' => []\n ]\n]\nRun Code Online (Sandbox Code Playgroud)\n
小智 5
您可以使用可选参数调用 getResult 方法:
return $this->createQueryBuilder('a')
->getQuery()
->getResult(Query::HYDRATE_ARRAY);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18068 次 |
| 最近记录: |