我需要为我的约会网站构建一个SQL / DQL查询,该网站检索所有用户,包括性别,年龄,位置和3个兴趣等匹配字段。我不知道如何在我的DQL查询中创建多个条件。我从这样的事情开始:
SELECT u FROM MyUserBundle:User u WHERE u.sex LIKE :preference");
$query->setParameters(array('preference' => '%' . $preference . '%'
'age' => '%' . $age . '%'
'location' => '%' . $location . '%'
'interest' => '%' . $interests . '%'));
$users = $query->getResult();
我正在使用Symfony2和Doctrine2,它对我不起作用。有人可以告诉我如何在查询中管理多个条件?谢谢你的帮助!
答案 0 :(得分:3)
如果查询更复杂,最好使用Doctrine2 Query Builder
$qb = $this->getDoctrine()->getEntityManager()->createQueryBuilder();
$qb
->select('u')
->from('MyUserBundle:User', 'u')
->where($qb->expr()->like('u.sex', ':preferense'))
->andWhere($qb->expr()->like('u.age', ':age'))
->andWhere($qb->expr()->like('u.location', ':location'))
->andWhere($qb->expr()->like('u.interest', ':interest'))
->setParameters(array(
'preferense' => '%'.$preference.'%',
'age' => '%'.$location.'%',
'location' => '%'.$location.'%',
'interest' => '%'.$interests.'%',
));
$users = $qb->getQuery()->getResult();
提示:如果$ interest是数组使用foreach。