我想使用querybuilder执行一个过滤器所以一切正常但是当我点击过滤器时没有任何事情发生并且总是如此重新设置所以这里是左边页面的图片我提交了一个表单我希望它显示如果用户没有进入表格页面显示所有车辆,则使用用户输入的信息在右侧找到车辆。在这两种情况下,用户应该只看到价格不为0的车辆。这有什么问题?
这是我的控制器:
$filterForm = $this->createForm('SpoiledCar\FrontOfficeBundle\Form\VoitureType3');
$em = $this->getDoctrine()->getManager();
$voiturefind = $em->getRepository('SpoiledCarFrontOfficeBundle:Voiture')
->myFindAll($filterForm);
$voitures = $this->get('knp_paginator')->paginate($voiturefind,$this->get(
'request')->query->get('page', 1),6
);
$filterForm->handleRequest($request);
if ($filterForm->isSubmitted() && $filterForm->isValid()) {
return $this->render('FOSUserBundle:Profile:listTable.html.twig', array(
'voitures' => $voitures,
'filterForm' => $filterForm->createView(),
));
}
return $this->render('FOSUserBundle:Profile:listTable.html.twig', array(
'voitures' => $voitures,
'filterForm' => $filterForm->createView(),
));
这是我的资料库
$qb = $this->createQueryBuilder('u')->Where('u.prix IS NOT NULL');
if ($filterForm->has('marque')) {
$qb->leftJoin('u.marque', 'm')
->andWhere( $qb->expr()
->like('m.nomMarque', ':marque'))
->setParameter('marque', '%'. $filterForm->get('marque')->getData().'%');
}
if ($filterForm->has('modele')) {
$qb->leftJoin('u.modele', 'n')
->andWhere( $qb->expr()->like('n.nom', ':modele'))
->setParameter('modele', '%'. $filterForm->get('modele')->getData().'%');
}
if ($filterForm->has('boitevitesse')) {
$qb->andWhere( $qb->expr()->like('u.boitevitesse', ':boitevitesse'))
->setParameter('boitevitesse', '%'. $filterForm->get('boitevitesse')->getData().'%');
}
if ($filterForm->has('chevaux')) {
$qb->andWhere( $qb->expr()->like('u.chevaux', ':chevaux'))
->setParameter('chevaux', '%'. $filterForm->get('chevaux')->getData().'%');
}
return $qb->getQuery()->getResult();