2017-04-15 14 views
1

왼쪽에있는 페이지의 그림입니다. 제출할 때 양식이 있습니다. 사용자가 입력하지 않은 경우 사용자가 입력 한 정보를 사용하여 오른쪽에서 발견 된 차량을 표시하고 싶습니다. 폼에 가격이이 경우 필요에 내 양식 0symfony2 검색 양식 매개 변수가있는 querybuilder

enter image description here

없는 경우에는 페이지는 사용자 만의 차를보고해야 두 경우 모두 .IN 모든 자동차를 보여줍니다하지만 난 더 여기에 문제 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". 

를이 내가 문제가 여기에서 오는 생각 내 querybuilder입니다하지만 난 내가 잘못 알고하지 않습니다 정확히

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(); 
} 

답변

1

getQuery() 메소드는 ... optionnal 표현의 나머지 전에 호출됩니다

"이동"보십시오 :

public function myFindAll(FormInterface $filterForm) 
{ 
    $qb = $this->createQueryBuilder('p'); 

    /***/ 

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

내가 다른 오류 PS 받고 있어요 괜찮 : 보복과 modele가 다른 테이블은 테이블 voiture [의미 론적 오류] 라인 0, COL에 외래 키에 의해 연결된다 (91) 근처의 '보복 LIKE : marque ': 오류 : PathExpression이 잘못되었습니다. StateFieldPathExpression이어야합니다. – user3010971

+0

'like ('u.marque', ': marque')'<- 왜'u'입니까? 어디서 찾았 니? – scoolnico

+0

나는 내가 p를 변경했다는 것을 잊었지만 nom는 marque를 제거하고 작동시킬 때 그 오류를 얻는다 !! – user3010971