2016-05-16 37 views
0

即時嘗試爲我的應用程序,我想要顯示的表,包含兩個領域與其他表關聯到一個「搜索引擎」。使用此查詢問題與「在哪裏」在symfony 3的關聯查詢

林:

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

工作,與表「用戶」和「客戶機」相關的,我有關聯正確定義,所以我不必須使用內部連接的聲明,但我得到以下錯誤:

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

我不知道如何訪問「名稱」字段,這是「客戶」表上。

其實我可以通過使用完整的內部聯接查詢來做同樣的事情,它的工作原理,但我不能在我的應用程序中使用它。

+0

您使用SQL或DQL嗎?你能用這個查詢提供你的控制器或存儲庫類的一部分嗎? – Asgu

+0

*其實我可以通過使用完整的內部連接查詢來做同樣的工作,但它不能在我的應用程序中使用它。* ....爲什麼? – DevDonkey

+0

即時通訊使用DQL,但我不知道哪些部分的控制器或存儲庫提供:S – xXNukem

回答

0

我不確定,但看起來你不能使用選擇器,如work.client.name。我認爲它基於教條使用「懶惰」的查詢。所以在這種情況下你必須使用表連接。 所以它應該看起來像這樣的

// 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

感謝您的答案,但它沒有解決問題,也許我需要找到一些方法來搜索數組中的查詢給出的數據 – xXNukem