À l'aide de la valeur de la colonne comme index de tableau dans la doctrine
Je suis à l'aide de la doctrine 2.1 afin de créer un modèle pour settings
table:
id | arg | value | category
1 | name | foo | general_settings
2 | desc | bar | general_settings
Supposons que j'ai beaucoup de réglage pour les différentes catégories. Afin d'obtenir tous les réglages pour une catégorie spécifique, je fais quelque chose comme ceci:
$q = Doctrine_Query::create()
->from('Setting p')
->where('p.category = ?', $category_name);
Tout fonctionne bien à ce moment. Bien.. la question de $64,000 est:
N'existe pas de données d'accéder à d'autres qui me permettent de lire le résultat comme ci-dessous?
$resultSet = $q->execute();
//the magic here could be use the -arg- column as index
$requested_setting = $resulSet['name']
//print the setting value
echo $requested_setting['value']; //should prints "foo"
//another way
echo $resulSet['desc']['value']; //should prints "bar"
OriginalL'auteur manix | 2012-08-23
Vous devez vous connecter pour publier un commentaire.
Je l'ai eu: l'astuce ici est d'utiliser la
INDEX BY
mot.Classe de requête
importer la classe de Requête (pas toujours facultatif):
créer la requête:
définir la hidration mode afin de travailler avec des tableaux
Affichage de la valeur:
QueryBuilder
Avec le
QueryBuilder
objet, vous pouvez définir l'index à lafrom
déclaration:Ensuite, vous pouvez accéder à l'objet:
vous êtes les bienvenus bro
Si vous êtes interroger uniquement des domaines spécifiques comme les
SELECT s.arg FROM [...] INDEX BY s.id
n'oubliez pas d'ajouter le champ que vous souhaitez indexer par trop. E. g., si vous souhaitez indexer pars.id
utilisationSELECT s.id, s.arg FROM [...] INDEX BY s.id
. Sinon, la Doctrine n'aurez pas votre valeur d'index dans ses lignes de résultat et donc le résultat de la requête sera régulièrement un tableau indexé au lieu d'un cadre associatif.Je vous remercie de la grippe!, Je ne pouvais pas trouver pourquoi il n'était pas à l'aide de l'index par
Pour référence, vous pouvez trouver le
indexBy
option dans le QueryBuilder méthodes de liste pourfrom
etjoin
. docs.doctrine-project.org/projects/doctrine-orm/en/latest/...OriginalL'auteur manix
Pour info lors de l'utilisation de createQueryBuilder dans votre objet entityrepository, vous pouvez spécifier directement l'INDEX PAR le long avec l'alias:
Cela évite la manipulation manuellement, à partir de laquelle est géré automatiquement en EntityRepositories.
OriginalL'auteur SMASHED