Doctrine DBAL 2:fetchAll()不必要的数组维度

mmm*_*mmm 12 php pdo doctrine-orm dbal

在我执行这样的查询时,在doctrine DBAL2中:

<?php
$connection = $this->getDatabaseConnection();

$sql =  "SELECT page_url
           FROM cms_user_page
          WHERE site_id = :siteid
            AND active = '1'
    ";

$stmt = $connection->prepare($sql);
$stmt->bindValue("siteid", $id);
$stmt->execute(); 

return $stmt->fetchAll();
?>
Run Code Online (Sandbox Code Playgroud)

我得到这样的结果:

Array
(
    [0] => Array
        (
            [page_url] => index.php?action=login
        )

    [1] => Array
        (
            [page_url] => index.php?action=shoppingcart
        )

    [2] => Array
        (
            [page_url] => index.php?action=products
        )
)
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有一个获取模式,产生这样的结果:

Array
(
    [0] => index.php?action=login

    [1] => index.php?action=shoppingcart

    [2] => index.php?action=products
)
Run Code Online (Sandbox Code Playgroud)

我在文档中找不到有关获取模式的任何信息.我可以做一个数组地图.但在我看来这是开销.

Doc*_*cal 24

您可以将获取模式参数传递给fetchAll().

$stmt->fetchAll(\PDO::FETCH_COLUMN)
Run Code Online (Sandbox Code Playgroud)

  • 虽然这可能会回答这个问题,但在答案中加入一些文字来解释你在做什么总是一个好主意.阅读[如何写出一个好的答案](http://stackoverflow.com/help/how-to-answer). (7认同)

tim*_*dev 8

这个答案已被编辑,因为Docal是对的,有人在评论中指出了它.

您可以使用FETCH_COLUMN获取模式来fetchAll():

$stmt->fetchAll(\PDO::FETCH_COLUMN)
Run Code Online (Sandbox Code Playgroud)

用户'你的常识'指出,fetchAll()可以返回以多种有趣格式格式化的数据.

或者您可以使用fetchColumn()进行迭代:

while($page_url = $stmt->fetchColumn()) { echo $page_url . PHP_EOL; }