Yolanda van der Vegt Yolanda van der Vegt - 3 months ago 22
PHP Question

Doctrine DBAL 2: fetchAll() unnecessary array dimensions

In doctrine DBAL2 when I execute a query like this:

<?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();
?>


I get a result like this:

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
)
)


My question is, is there a fetch mode that produces an result like this:



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

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

[2] => index.php?action=products
)


I could not find any info about fetch modes in the documentation. and i could do an array map. But thats overhead in my opinion..

Answer

If you have more than one case where you need that form of result, although i dont really understand the sense too, you could implement AbstractHydrator interface to create your own ArrayHydrator that returns the structure as you need it.

Hydration Classes reside in NS:

Doctrine\ORM\Internal\Hydration