IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[ERREUR] Doctrine requete


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut [ERREUR] Doctrine requete
    Bonjour,
    Je suis débutant sur symfony et ai encore un peu de mal.
    Surêment quelque chose de très simple à vos yeux !

    Voici mon erreur :
    Return value of App\Repository\ArticlesRepository::findByReference() must be an instance of App\Entity\Articles or null, array returned
    Erreur qui est sur ma requete sql donc probleme de syntaxe peut-être.

    Mon but étant de faire un <select> avec plusieurs options (nom de colonne), un champ pour rechercher ce qu'on veut dans la colonne et bouton submit.

    Voici mon repository

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        public function findByReference($params): ?Articles
        {
            $qb =  $this->createQueryBuilder('a') 
                ->select()
                ->andWhere('a.categorie = :search')
                ->setParameter('search', $params['search'])
                ->getQuery();
     
                return $qb->execute();
            ;
        }
    suivi de mon controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /**
         * @Route("/reference", name="articles_reference", methods={"GET"})
         */
        public function indexReference(ArticlesRepository $articlesRepository,Request $request): Response
        {
     
             $search = $request->query->get('search');
     
             $params = [
                 'search' => $search,
             ];
             dump($params);
     
            return $this->render('articles/index.html.twig', [
                'articles' => $articlesRepository->findByReference($params),
            ]);
        }
    Je vous remercie de tout aide apportée !

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 72
    Par défaut
    Dans la déclaration de ta fonction findByReference().

    - Si tu veux qu'elle retourne plusieurs Articles : Retire le type de retour ?Articles
    - Si tu veux qu'elle ne retourne qu'un seul Articles : Remplace $qb->execute() par $qb->getSingleResult().

    Dans le second cas, si plusieurs Articles ont la même référence, tu n'as pas vraiment la possibilité de savoir quel article sera retourné.

    EDIT : Je dis une petite bêtise : getSingleResult() ne retournera pas n'importe quel Article s'il en existe plusieurs avec la même ref, il retournera une QueryException.
    Pour plus d'info voir la doc officielle : https://www.doctrine-project.org/pro...nce/query.html

    C'est en Anglais mais pas extrêmement compliqué et il y a des exemples

  3. #3
    Membre averti
    Femme Profil pro
    stage
    Inscrit en
    Juillet 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : stage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 37
    Par défaut
    Citation Envoyé par NoPr0n Voir le message
    Dans la déclaration de ta fonction findByReference()
    - Si tu veux qu'elle retourne plusieurs Articles : Retire le type de retour ?Articles
    Sinon le reste du code est bon?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 72
    Par défaut
    Je ne l'ai pas testé mais à première vue ça semble OK. Il faut que ton template puisse afficher un tableau par contre.

    (j'ai ajouté un edit sur ma réponse précédente, une petite erreur s'y était glissé)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Par défaut
    Bonjour,
    Le premier probleme vient de la déclaration de retour de la fonction du repository.

    Voici le code qui serait préférable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function findByReference($params): ?array
        {
             return $this->createQueryBuilder('a') 
                ->select()
                ->andWhere('a.categorie = :search')
                ->setParameter('search', $params['search'])
                ->getQuery()->getResult();
        }

Discussions similaires

  1. URGENT : Erreur dans requete
    Par shub dans le forum Access
    Réponses: 5
    Dernier message: 21/06/2006, 11h37
  2. erreur dans requete Sql
    Par flOZ dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/05/2006, 02h49
  3. [TRANSACTION] Erreur dans requete
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 7
    Dernier message: 26/05/2005, 17h38
  4. erreur bigint requete Employee.fdb via AdoDb
    Par jflebegue dans le forum Connexion aux bases de données
    Réponses: 7
    Dernier message: 04/01/2005, 11h03
  5. Recuperer les erreurs des requetes sql en asp
    Par emile13 dans le forum ASP
    Réponses: 3
    Dernier message: 01/04/2004, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo