Bonjour,

Je débute la découverte de Symfony et je suis les didacticiels super bien faits de ce site, mais je but (déjà!) sur le tuto de découverte de Doctrine.

J'ai fait la méthode private permettant de réutiliser facilement une portion de requête:

    private function findVisibleQuery(): QueryBuilder {
        return $this->createQueryBuilder('p')
            ->where('p.sold = false');
    }

Mais lorsque je veux ensuite affiche la liste des biens dispos, Symfony me renvoie cette erreur:
Return value of App\Repository\PropertyRepository::findVisibleQuery() must be an instance of App\Repository\QueryBuilder, instance of Doctrine\ORM\QueryBuilder returned

J'ai de nouveau regardé la vidéo et je n'ai pas l'impression d'avoir oublié quelque chose... ce qui doit pourtant être le cas, mais où, je ne sais pas...
Si une bonne âme passe par là et peut m'aider à résoudre ce souci...

Merci!

4 réponses


SimonAndGarfunkel
Réponse acceptée

Bonjour jouvrard,

Je pense que tu as oublié de charger le namepace du QueryBuilder. Dans le fichier où tu as défini la méthode findVisibleQuery, ajoute au début :

use Doctrine\ORM\QueryBuilder;
jouvrard
Auteur

Je me réponds en partie à moi-même.
Après plusieurs essais j'ai tenté d'enlever le ": QueryBuilder" apr_s le nom de la méthode et là... tout fonctionne!

Alors oui, ça fonctionne mais:

  • Je ne sais pas pourquoi
  • Je suppose que si la tuto dit de la faire c'est que c'est mieux

Si vous avez une explication/solution...

Merci!

jouvrard
Auteur

Bonjour,

Désolé pour le temps de réponse.
C'était tout simplement ça, quelle quiche... :D

Merci! :)

Bonjour,

Commençant mon apprentissage sur Symfony 4 avec l’IDE Éclipse, j’ai rencontré exactement le même problème.
La résolution s’est faite de la même façon que pour jouvrard en supprimant le « : QueryBuilder », mais je ne comprends pas également pourquoi.

Est-ce que depuis ces 2 années quelqu’un a pu avoir la réponse ?

Merci.