2016-05-16 9 views
0

Ich versuche, eine "Suchmaschine" für meine App, die Tabelle, die ich zeigen möchte, enthält zwei Felder, die zu anderen Tabellen zugeordnet sind.Problem mit "wo" in einer verknüpften Abfrage in Symfony 3

Im mit dieser Abfrage:

Select work from WorkBundle:Work work 
     where work.client.name like '$search%' 

Arbeit, mit den Tabellen „user“ und „Client“ zugeordnet ist, habe ich die Verbände richtig definiert, so muss ich nicht verwenden die innere Join-Anweisung, aber ich erhalten folgende Fehlermeldung:

[Semantical Error] line 0, col 68 near 'nombre like 'fsdf%'': Error: Class WorkBundle\Entity\Work has no field or association named client.nombre 

ich weiß nicht, wie man den „name“ Feld davon auf der „Client“ Tabelle zuzugreifen.

Eigentlich kann ich das gleiche tun, indem ich eine vollständige innere Join-Abfrage verwende und es funktioniert, aber ich kann es nicht in meiner App verwenden.

+0

Verwenden Sie SQL oder DQL? Können Sie einen Teil Ihrer Controller- oder Repository-Klasse mit dieser Abfrage versehen? – Asgu

+0

* Eigentlich kann ich das gleiche tun, indem ich eine vollständige innere Join-Abfrage verwende und es funktioniert, aber ich kann es nicht in meiner App verwenden. * .... warum? – DevDonkey

+0

ich benutze DQL, aber ich weiß nicht, welche Teile des Controllers oder Repositore bieten: S – xXNukem

Antwort

0

Ich weiß nicht sicher, aber es scheint, dass Sie Selektoren wie work.client.name nicht verwenden können. Ich denke, dass es basierend auf der Lehre "faule" Abfragen verwendet. Daher müssen Sie in diesem Fall Tabellen-Joins verwenden. So sollte es so ähnlich aussehen

// work repository 
public function findByKeyword($keyword) 
{ 
    $qb = $this->createQueryBuilder("w"); 
    $result = $qb 
     ->add('where', $qb->expr()->like("wc.name", ':keyword')) 
     ->leftjoin("w.client", "wc") //or join or innerjoin depends of your case 
     ->setParameters([ 
      'keyword' => $keyword 
     ]) 
     ->getQuery() 
     ->getResult() 
     ; 

    return $result; 
} 
+0

Danke für die Antwort, aber es löste das Problem nicht, vielleicht muss ich eine Möglichkeit finden, in dem Array zu suchen, das die Abfrage gibt – xXNukem

Verwandte Themen