【发布时间】:2017-08-06 14:44:34
【问题描述】:
所以,问题是在一个数组中获取 ids(或任何其他字段),例如:
[
"someId1",
"someId2",
"someId3",
]
我试图通过下一个查询来接受它:
$this->createQueryBuilder()
->select('_id')
->hydrate(false)
->getQuery()
->toArray()
但我拿的不是我想要的,而是靠近这个:
112 => array:1 [
"_id" => 112
]
113 => array:1 [
"_id" => 113
]
114 => array:1 [
"_id" => 114
]
(我使用策略增量)。我尝试通过 map、reduce 来做到这一点,但我知道我对这些函数一无所知:)。那么有人可以帮帮我吗?
P.S:我知道如何使用 php 函数来实现这一点,例如 array_keys | array_values。但我真的很想知道如何通过 mongoDB 来做到这一点,特别是在 ODM 中使用 createQueryBuilder
【问题讨论】:
-
这是 ORM,因此请尝试将其调整为您的 ODM:在 repo
public function findIds() { return $this->createQueryBuilder('c') ->select('partial c.{id}') ->getQuery() ->getResult(Query::HYDRATE_ARRAY); }然后$ids = $this->yourRepository->findIds(); $result = array_column($ids, 'id');在您的服务中。 -
ORM 和 ODM NOT 是一样的。只需阅读该项目核心的文档
标签: php mongodb symfony doctrine-orm doctrine-odm