1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
// Exemple Symfony DQL :
public function findAdResearched(
string $page,
int $resultPerPages,
int $isPagination,
?string $marqueId,
?string $modele,
?string $carburant,
?int $min_year,
?int $max_year,
?int $min_kms,
?int $max_kms,
?int $min_price,
?int $max_price
)
{
$qb = $this->createQueryBuilder('a');
$qb->select('
a.id,
a.annee,
a.prix,
ma.marque,
mo.modele,
p.emplacement AS photos
');
$qb->join('a.marque', 'ma')
->join('a.modele', 'mo')
->join('a.carburant', 'c')
->join('a.photos', 'p')
->where('p.estPrincipal = 1');
if( ! empty($marqueId))
$qb->andWhere('ma.id = :marqueId')
->setParameter("marqueId", $marqueId);
if( ! empty($modele))
$qb->andWhere('mo.modele LIKE :modele')
->setParameter("modele", $modele);
if( ! empty($carburant))
$qb->andWhere('c.carburant LIKE :carburant')
->setParameter("carburant", $carburant);
if( ! (empty($min_year) && empty($max_year)))
$qb->andWhere('a.annee BETWEEN :min_year AND :max_year')
->setParameter('min_year', $min_year)
->setParameter('max_year', $max_year);
if( ! (empty($min_price) && empty($max_price)))
$qb->andWhere('a.prix BETWEEN :min_price AND :max_price')
->setParameter("min_price", $min_price)
->setParameter("max_price", $max_price);
if( ! (empty($min_kms) && empty($max_kms)))
$qb->andWhere('a.kilometrage BETWEEN :min_kms AND :max_kms')
->setParameter("min_kms", $min_kms)
->setParameter("max_kms", $max_kms);
$qb->orderBy('a.createdAt', 'DESC');
if($isPagination){
$qb->setFirstResult(($page-1) * $resultPerPages);
$qb->setMaxResults($resultPerPages);
}
return $qb->getQuery()->getResult();
} |
Partager