2017-09-19 1 views
1

Ich brauche Abfrage, aber es ist nicht einfache Abfrage. Ich brauche setParameters in der Abfrage abhängig von Variablenwerten. Einfacher Code:Fluid SQL Abfrage abhängig von Variablenwerten

$repository = $this->getDoctrine()->getRepository(Item::class); 

    $query = $repository->createQueryBuilder('b'); 

    if ($itemId != null) { 
     $query->where('b.id = :id') 
      ->setParameter('id', $itemId); 
    } 

    if ($name != "XXX") { 
     $query->where('b.name = :name') 
      ->setParameter('name', $name); 
    } 

    $item = $query->getQuery()->getResult(); 

    return $this->render('default/search/result.html.twig', 
     array('item' => $item)); 

Dieser Code ist jedoch falsch. Weiß jemand, wie man es löst?

Antwort

0

sollten Sie verwenden $query->andWhere()

so in Ihrem Fall:

$repository = $this->getDoctrine()->getRepository(Item::class); 

    $query = $repository->createQueryBuilder('b'); 

if ($itemId != null) { 
    $query->where('b.id = :id') 
     ->setParameter('id', $itemId); 
} 

if ($name != "XXX") { 
     $query->andWhere('b.name = :name') 
     ->setParameter('name', $name); 
} 

$item = $query->getQuery()->getResult(); 

return $this->render('default/search/result.html.twig', 
    array('item' => $item)); 

// HINWEIS: -> UndWo() direkt verwendet werden können, ohne -> where() vor

für mehr sehen hier: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html

+0

Danke für die Antwort, ich werde es versuchen. – Questionamrk

+0

@Questionamrk lassen Sie mich wissen, wenn Sie immer noch Problem –

+0

Problem, das ich vorgeben werde Komplikation von IFs bcz Ich habe etwa 10 Variablen zu überprüfen. – Questionamrk

Verwandte Themen