Bonjour,

Voila je cherche implement a faire une recherche dans plusieurs table d'une base de données, avec une recherche par mot clef.
J'ai le code ci dessous qui fonctionne parfaitemement, il recherche pour l'instant dans une colonne (title) et il cherche le mot n'import ou dans la phrase.

public function search($search) {
    $qb = $this->createQueryBuilder('p')
    ->where('p.title LIKE :title')
    ->setParameter('title', '%'.$search.'%')
    ->orderBy('p.title', 'ASC');

return $qb->getQuery()->getResult();
}

J'aimerai simplement effectuer en meme temp une recherche aussi dans la colonne (description) et (mot_clef).

Quelqu'un peut-il m'aider ?

1 réponse


salut,

voici un exemple avec en plus un recherche multitable mais principe reste le même

il suffit d'utiliser "orWhere" dans ta query

public function rechercheRetours($recherche, $agence)
    {
        $query = $this->createQueryBuilder('g')
            ->select('g', 'm','d', 'e')
            ->join('g.magasin', 'm')
            ->join('g.donneurOrdre', 'd')
            ->join('g.emplacement', 'e')
            ->where('g.numeroSage LIKE :recherche')
            ->orWhere('g.numeroDonneurOrdre LIKE :recherche')
            ->orWhere('g.nomDestinataire LIKE :recherche')
            ->orWhere('m.nomMagasin LIKE :recherche')
            ->orWhere('d.nomDonneurOrdre LIKE :recherche')
            ->andWhere('g.agence = :agence')
            ->orderBy('g.dateEntreeEntrepot')
            ->setParameter('recherche', '%' . $recherche . '%')
            ->setParameter('agence', $agence)
            ->getQuery();

        return $query->getArrayResult();
    }