如何获取一维标量数组作为原则dql查询结果?

2022-08-30 06:57:40

我想从拍卖表的id列中获取一个值数组。如果这是一个原始的SQL,我会写:

SELECT id FROM auction

但是,当我在教义中这样做并执行时:

$em->createQuery("SELECT a.id FROM Auction a")->getScalarResult(); 

我得到一个这样的数组:

array(
    array('id' => 1),
    array('id' => 2),
)

相反,我想得到一个这样的数组:

array(
    1,
    2
)

我如何使用教义来做到这一点?


答案 1

< 5.5 菲律宾比索

您可以使用 ,并且由于每个数组只有 item,因此您可以优雅地用作回调,而不是编写闭包array_map'current'

$result = $em->createQuery("SELECT a.id FROM Auction a")->getScalarResult();
$ids = array_map('current', $result);

有关内存使用情况的其他信息,请参阅下面的Petr Sobotka的答案

> 菲律宾比索 = 5.5

正如jcbwlkr在下面回答的那样,推荐的使用方式。array_column


答案 2

从 PHP 5.5 开始,您可以使用 array_column 来解决此问题

$result = $em->createQuery("SELECT a.id FROM Auction a")->getScalarResult();
$ids = array_column($result, "id");

推荐