2017-04-15 2 views
1

Hier ist ein Bild von der Seite auf der linken Seite Ich habe ein Formular, wenn ich die gesuchten Fahrzeuge auf der rechten Seite mit den vom Benutzer eingegebenen Informationen anzeigen möchte, wenn der Benutzer nicht geht erforderlich, um die Form zeigt die Seite alle Autos .in beiden Fällen sollte der Nutzer nur Fahrzeuge sieht, wo der Preis nicht 0symfony2 Suchformular QueryBuilder mit Parametern

enter image description here

das ist meine Form in Fall ist, aber ich habe kein Problem, hier 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'))  

hier ist mein Controller:

$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(), 

)); 

ich erhalte diese Störung:

Attempted to call an undefined method named "andWhere" of class "Doctrine\ORM\Query". 

und das ist mein Querybuilder Ich denke, das Problem von hier kommen, aber ich weiß nicht, was ich falsch mache genau

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

Antwort

1

die getQuery() -Methode vor dem Rest der Optionnal Ausdrücke genannt wird ...

Versuchen Sie, „es zu bewegen“:

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

    /***/ 

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

okay, ich bin einen anderen Fehler ps bekommen: marque und modelte sind andere Tabellen, die von Fremdschlüssel-Tabelle voiture [Semantische Fehler] Zeile 0, Spalte 91 in der Nähe von ‚marque verbunden LIKE: marque ': Fehler: Ungültiger PathExpression. Muss eine StateFieldPathExpression sein. – user3010971

+0

'wie ('u.marque', ': marque')' <- warum 'du'? Wo findest du es? – scoolnico

+0

ich reparierte, dass ich vergesse, dass ich sie zu p änderte, aber nom ich bekomme diesen Fehler, wenn ich marque entferne und modelliere es funktioniert !! – user3010971