【发布时间】:2015-07-03 06:13:33
【问题描述】:
我有这些实体:
- 用户
- 工作
- 语言
用户可以说一种或多种语言
一项工作可能需要一种或多种语言
我想针对特定工作过滤所有具有该工作所需的所有语言的用户。
例子:
- 用户 1 会说英语 + 法语
- 用户 2 会说英语 + 西班牙语
- Job1 需要英语
- Job2 需要英语 + 西班牙语
然后:
- User1 和 User2 应该与 Job1 匹配
- User2 仅匹配 Job2
这是我的查询生成器:
public function getMatchingUsersFromJob($job) {
$qb = $this->_em->createQueryBuilder();
$qb->select('j')
->from('MyBundle:User', 'u')
->join('u.languages', 'l')
;
if( $job->getLanguages()->count() > 0 ){
$i = 1;
foreach( $job->getLanguages() as $language) {
$qb->andWhere('l.name = :language'.$i)
->setParameter('language'.$i, $language->getName() )
;
$i++;
}
}
return $qb->getQuery()->getResult();
}
问题是:我总是得到一个空结果...
如何比较数组集合?并确保选择所有具有所有必需语言的用户?
【问题讨论】: