一个分支机构可能有很多客户,客户可能与许多分支有关。因此,这是许多关系。
分支:
<many-to-many target-entity="Customer" inversed-by="branches" field="customers"/>
客户:
<many-to-many field="branches" target-entity="Branch" mapped-by="customers"/>
现在,我想执行以下查询:选择所有客户分支与给定分支对象匹配的所有客户。
这是我尝试的:
$branch = $em->getRepository('MyBundle:Branch')
->findOneById($bid);
$qb->select(array('c'))
->from('MyBundle:Customer', 'c')
->where($qb->expr()->in('c.branches', $branch))
->andWhere('c.delted = 0')
->getQuery();
所以我的想法是在语句中使用。但这不起作用。
错误:
致命错误:类日期时间的对象无法转换为字符串 ..Query expr func.php在第48行
上
有什么想法如何正确地做到这一点?
尝试在查询中添加加入:
$qb->select(array('c', 'b'))
->from('MyBundle:Customer', 'c')
->join('c.branches', 'b')
->where('b IN (:branch)')
->andWhere('c.deleted = 0')
->setParameter('branch', array($branch))
->getQuery();