[symfony2] probléme de requete

rif5
Invité n'ayant pas de compte PHPfrance

13 sept. 2015, 03:12

Bonjour,

Je viens vers vous car j'ai un soucis avec une de mes requetes, je n'arrive pas tout a fait a faire ce que je veut :s

En fait je cherche a lister des produits qui sont dans une sous-catégorie (qui appartient a une catégorie), et qui sont proposer par des vendeur

J'ai 5 entité:

une avec les produits

une avec les catégories

une avec les sous-catégorie

une avec les vendeurs

et une qui match les produits detenu par les vendeurs

L'objectif est de partir d'une catégorie et de récupéré les sous-catégorie liée, avec les produits détenu par un vendeur défini.

J'ai fait une requete qui fonctionne est me donne exactement ce que je veut :

On est dans le repository SousCat, $id correspond a l'id de la category, $vendeur correspond l'id du vendeur

Code : Tout sélectionner

public function findSouscatForCategory($id,$vendeur) { $qb = $this->createQueryBuilder('a') ->leftJoin('a.category', 'd') ->leftJoin('a.products', 'p') ->leftJoin('p.store', 's') ->addSelect('d') ->addSelect('p') ->addSelect('s') ->where('a.category = :id') ->setParameter('id', $id) ->andWhere('s.vendeur = :vendeur') ->setParameter('vendeur', $vendeur) ; return $qb->getQuery()->getResult(); }


Cette requete me donne tout ce que je veut, ces a dire tous les produits pour un vendeur donner et une categorie donnée rangé par sous-categorie.

Mais le probléme que je rencontre, ces quand il n'y a pas d'article qui matche avec le vendeur... quand ces le cas sa me retourne un résultat vide, ce qui est normal... mais j'aurais voulu quand meme pouvoir lister les sous-catgorie en mettant un message comme quoi aucun produit n'a été trouver, mais vu que ma requete me renvois un tableau vide, je n'est meme pas accés au sous-catégorie :s

De la meme facon, si il n'y a pas de produit dans certaine sous-categorie d'une catégorie, les sous-catégories avec produit s'affiche bien, par contre celle qui n'ont pas de produit trouvé ne s'affiche du coup pas du tous :s

Vous aurez comprit que meme si sa marche ce n'est pas le comportement que je recherche, je voudrait que meme si un vendeur n'a aucun produit dans une sous-catégorie la catégorie s'affiche, et la j'ajouterais un message comme quoi il n'y a pas de produits.

En fait je voudrais que si le:

Code : Tout sélectionner

->andWhere('s.vendeur = :vendeur')
ne retourne aucun resultat, je puisse avoir quand meme le reste des donnée recupéré, et un tableau vide pour les produits.

Je cherche depuis un moment comment faire, mais je ne trouve rien de concluant, j'espere que vous arriverez a me mettre sur la piste, je suis sur que sa ne doit pas etre bien compliquer, mais la je n'arrive plus a y voir clair :s

J'espere que vous aurez comprit mon soucis et que vous pourrez me donner un coup de pouce :)

Merci d'avance :)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 déc. 2015, 11:59

Code : Tout sélectionner

->orWhere('s.vendeur is null')
?

Ou alors une seconde requête sans paramètre de vendeur exécutées si le résultat de la première est vide.