Doctrine indexe de 0 à X les résultats de vos requêtes, mais vous avez peut être envie d’avoir l’id de l’entity en index ?
Voici une astuce toute simple à utiliser dans la méthode de votre repository.
1 $query = $this->_em->createQueryBuilder();
2
3 return $query->select("p")
4 ->from("AppBundle:Post", "p", 'p.id')
5 ->getQuery()
6 ->getResult();
Il vous suffit donc d’ajouter un paramètre à la fonction ->from()
. Ici en ajoutant "p.id"
, le tableau de retour sera :
1 array
2 1 => object(AppBundle\Entity\Post)
3 private 'id' => int 1
4 private 'name' => string 'XXXY fjidshif'
5 private 'slug' => string 'test'
6 2 => object(AppBundle\Entity\Post)
7 private 'id' => int 2
8 private 'name' => string 'XXXY Bonjour tout le monde !fjidshif'
9 private 'slug' => string 'bonjour-tout-le-monde'
Le paramètre doit faire parti du select. Et attention, s’il n’est pas unique la clé écrasera une précédente.