La Doctrine DBAL 2: fetchAll() inutile dimensions du tableau
Dans la doctrine DBAL2 lorsque j'exécute une requête comme ceci:
<?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();
?>
- Je obtenir un résultat comme ceci:
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
)
)
Ma question est, est-il un mode de lecture qui produit un résultat comme ceci:
Array
(
[0] => index.php?action=login
[1] => index.php?action=shoppingcart
[2] => index.php?action=products
)
Je ne pouvais pas trouver toutes les informations sur les modes d'extraction dans la documentation. et je pourrais faire un tableau de la carte. Mais c'est frais généraux, à mon avis..
OriginalL'auteur Yolanda van der Vegt | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez passer une mode de lecture de paramètre
fetchAll()
.exactement ce dont j'ai besoin 🙂 Merci!
Cela permettra d'exécuter en une erreur fatale lors du travail avec les espaces de noms, qui est probablement le cas lorsque l'on travaille avec des bibliothèques comme Doctrine. Vous vraiment doit utiliser le nom complet,
\PDO
.OriginalL'auteur Docal
Cette réponse a été édité car Docal est droit, et quelqu'un l'a fait remarquer dans un commentaire.
Vous pouvez utiliser le FETCH_COLUMN fetch mode de fetchAll():
En tant qu'utilisateur "bon Sens", fetchAll() peut renvoyer des données formatées dans une multitude de formats intéressants.
Ou vous pouvez itérer avec fetchColumn():
while($page_url = $stmt->fetchColumn()) {
echo $page_url . PHP_EOL;
}
Édité ma réponse, parce que vous êtes tout à fait correct.
Cela a fonctionné pour moi une fois j'ai ajouté le '\' avant AOP. "timdev" il a, dans sa réponse, mais il n'est pas dans la réponse ci-dessus marqués que la réponse choisie. Juste un rappel pour d'autres, car ce qui m'a pris un peu de comprendre.
OriginalL'auteur timdev
Si vous avez plus d'un cas où vous avez besoin de cette forme de résultat, bien que je n'ai pas vraiment comprendre le sens trop, vous pourriez mettre en œuvre AbstractHydrator interface pour créer votre propre ArrayHydrator qui retourne la structure que vous en avez besoin.
Hydratation des Classes de résider en nouvelle-écosse:
OriginalL'auteur Christian Huber
De PHP5.5 vous pouvez utiliser aray_column pour atteindre le résultat requis comme suit:
OriginalL'auteur StrayObject
Dès que vous vous demandez plusieurs lignes dans une base de données, il ne pas sens.
SGBDR magasins de lignes et de colonnes, de sorte que le résultat qu'il représentait que, surprise, les lignes et les colonnes.
Dans le monde de la programmation, il est appelé une matrice dans le PHP, il est un
array
des résultats dans le
Donc non, vous ne pouvez pas le faire, vous préférez pour traiter le résultat en fonction de vos besoins.
OriginalL'auteur Boris Guéry