【发布时间】:2017-04-15 22:19:32
【问题描述】:
这是左侧页面的图片我在提交时有一个表单我希望它使用用户输入的信息在右侧显示找到的车辆,否则如果用户没有转到页面显示的表单所有汽车。在这两种情况下,用户都应该只看到价格不为 0 的汽车
这是我的表格,以备不时之需,但我在这里 VoitureType3.php 没有问题:
$builder
->add('marque', EntityType::class,array(
'class' => 'SpoiledCarFrontOfficeBundle:Marque',
'required' => true,
'empty_value' => '== Choisissez une Marque ==',
))
->add('modele', DependentFormsType::class,array(
'entity_alias' => 'modele_by_marque',
'parent_field' => 'marque',
'empty_value' => '== Choisissez un Modele =='
))
->add('chevaux', 'choice', array( 'choices' => array('4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '11' => '11', '12' => '12', '13' => '13', '14' => '14', '15' => '15', '16' => '16'),'expanded' => false, 'required' => true,
'multiple' => false, 'label' => 'Nombre de Chevaux' ))
->add('boitevitesse', 'choice', array( 'choices' => array('Automatique' => 'Automatique', 'Manuelle' => 'Manuelle', 'Sequentielle' => 'Sequentielle'),'expanded' => false, 'required' => true,
'multiple' => false, 'label' => 'Boite de Vitesse' ))
这是我的控制器:
$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);
// Bind values from the request
$filterForm->handleRequest($request);
if ($filterForm->isSubmitted() && $filterForm->isValid()) {
return $this->render('FOSUserBundle:Profile:listTable.html.twig', array(
'voitures' => $voitures,
));
}
return $this->render('FOSUserBundle:Profile:listTable.html.twig', array(
'voitures' => $voitures,
'filterForm' => $filterForm->createView(),
));
我收到此错误:
Attempted to call an undefined method named "andWhere" of class "Doctrine\ORM\Query".
这是我的查询构建器,我认为问题来自这里,但我不知道我到底做错了什么
public function myFindAll(FormInterface $filterForm)
{
$qb = $this->createQueryBuilder('p')
->Where('p.prix IS NOT NULL')
->getQuery();
if ($filterForm->has('marque')) {
$qb->andWhere( $qb->expr()->like('u.marque', ':marque'))
->setParameter('marque', '%'. $filterForm->get('marque')->getData().'%');
}
if ($filterForm->has('modele')) {
$qb->andWhere( $qb->expr()->like('u.modele', ':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->getResult();
}
【问题讨论】:
标签: symfony controller repository query-builder dql