Bonjour,

Voila je rencontre un petit problème avec mon code.

/**
 * @Route("/recherche_prod_titre_desc", name="recherche_prod_titre_desc")
 */
public function rechercherProduitParTitreOuDescAction() {
    $dql = "SELECT p FROM AppBundle:Produit p WHERE p.titre LIKE :monTitre OR p.description LIKE :description";
    $query = $this->getDoctrine()->getManager()->createQuery($dql);
    $query->setParameter("monTitre", "%ka%");
    $query->setParameter("description", "%9%");
    $produits = $query->getResult();
    return $this->render("AppBundle:Test:lister_produits.html.twig", array('mesProduits' => $produits,
                'titre' => "Tous les produits"
    ));
}

Ci dessous mon twig
{% extends 'base.html.twig' %}

{% block body %}
<h1>{{titre}}</h1>
{% for prodAct in mesProduits %}
Produit actuel: {{ prodAct.titre }}
Description : {{ prodAct.description }}
Prix : {{ prodAct.prix }}
Stock : {{ prodAct.stock }}
{% for catAct in prodAct.categories %}
Categorie : {{ catAct.titre }}
{% endfor %}
<br>
{% endfor %}

{% endblock %}

Voici la requete que sf execute

SELECT p0_.id AS id0, p0.titre AS titre1, p0.description AS description2, p0.prix AS prix3, p0.stock AS stock4 FROM produit p0 INNER JOIN produitscommandes p2 ON p0.id = p2.produitid INNER JOIN commande c1 ON c1.id = p2.commandeid INNER JOIN client c3 ON c1_.clientid = c3.id WHERE c3.login LIKE "%wa%" AND p0.prix BETWEEN 0 AND 20000005

Il me retourne 3 résultats via ma base :
4 Desert Eagle .50 3000 10
9 Bazooka NULL 5000 2
4 Desert Eagle .50 3000 10

Ce que j'obtiens

Tous les produits

Produit actuel: Desert Eagle Description : .50 Prix : 3000 Stock : 10 Categorie : Armes Poing
Produit actuel: Bazooka Description : Prix : 5000 Stock : 2 Categorie : Armes Lourdes

Merci Beaucoup pour votre aide sur le sujet

Pour résumer il me fait un DISTINCT alors qu'il ne devrait pas

2 réponses


Peux tu reformater la question avec du markdown afin de mieux comprendre le code ?

Ricos
Auteur
/**
 * @Route("/recherche_prod_titre_desc", name="recherche_prod_titre_desc")
 */
public function rechercherProduitParTitreOuDescAction() {
    $dql = "SELECT p FROM AppBundle:Produit p WHERE p.titre LIKE :monTitre OR p.description LIKE :description";
    $query = $this->getDoctrine()->getManager()->createQuery($dql);
    $query->setParameter("monTitre", "%ka%");
    $query->setParameter("description", "%9%");
    $produits = $query->getResult();
    return $this->render("AppBundle:Test:lister_produits.html.twig", array('mesProduits' => $produits,
                'titre' => "Tous les produits"
    ));
}
{% extends 'base.html.twig' %}
{% block body %}
{{titre}}

{% for prodAct in mesProduits %}
Produit actuel: {{ prodAct.titre }}
Description : {{ prodAct.description }}
Prix : {{ prodAct.prix }}
Stock : {{ prodAct.stock }}
{% for catAct in prodAct.categories %}
Categorie : {{ catAct.titre }}
{% endfor %}

{% endfor %}
{% endblock %}