gpt4 book ai didi

doctrine-orm - 学说 ORM HYDRATE_SCALAR 与 HYDRATE_ARRAY

转载 作者:行者123 更新时间:2023-12-05 07:55:16 24 4
gpt4 key购买 nike

我正在尝试使用以下查询通过 Doctrine ORM 从表中获取列的所有值:

SELECT item.templateId FROM MyBundle:Item item WHERE item.id IN (:ids)

我知道 Doctrine 有水合模式 Query::HYDRATE_SINGLE_SCALAR 返回单个标量值。但是,当结果中有多个记录时,它会抛出 NonUniqueResultException,这很好。

自然地,我猜测 Query::HYDRATE_SCALAR 可以解决问题。但是,它返回的结果与使用 Query::HYDRATE_ARRAY完全相同

代码:

$ids   = [1, 2, 3];
$query = $this->entityManager->createQuery('
SELECT item.templateId FROM MyBundle:Item item WHERE item.id IN (:ids)
')
->setParameter('ids', $ids)
;

// Regardles whether I use HYDRATE_SCALAR or HYDRATE_ARRAY
// $result is the same
$result = $query->getResult(Query::HYDRATE_SCALAR);

下面是 $result 在这两种情况下的样子:

Array
(
[0] => Array
(
[templateId] => 52
)

[1] => Array
(
[templateId] => 90
)

[2] => Array
(
[templateId] => 89
)
)

我希望它看起来如何:

Array
(
[0] => 52

[1] => 90

[2] => 89
)

我知道我可以将它转换成我想要的形式,但我想知道为什么 HYDRATE_SCALAR 的行为不像我期望的那样。

最佳答案

我认为它的行为是这样的,因为 the documentation说:

[it] can contain duplicate data.

这就是 array_column (php 5.5) 发挥作用的时候了。

关于doctrine-orm - 学说 ORM HYDRATE_SCALAR 与 HYDRATE_ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30050886/

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