2016-05-16 105 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