symfony2原则查询何处的否定
我想查询我的所有类别,如下所示:symfony2原则查询何处的否定,symfony,doctrine,Symfony,Doctrine,我想查询我的所有类别,如下所示: $othercategories = $this->getDoctrine()->getRepository('Bundle:Category')->findBy( array('language' => $language, 'active' => 1), array('sorting' => 'ASC') ); 我想做的是在我的查询中添加另一个参数,我想要所有类别,除了一个具有特定id的类别。例如: WHERE
$othercategories = $this->getDoctrine()->getRepository('Bundle:Category')->findBy(
array('language' => $language, 'active' => 1),
array('sorting' => 'ASC')
);
我想做的是在我的查询中添加另一个参数,我想要所有类别,除了一个具有特定id的类别。例如:
WHERE id NOT IN ( 2 )
或
其中id为2
如何实现这一点?您可以像这样使用DQL查询
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery( 'SELECT c FROM Bundle:Category c WHERE c.language = :language AND c.active = 1 AND c.id NOT IN ( 2 ) ORDER BY c.language ASC' )
->setParameter('language', $language);
$category= $query->getResult();
很抱歉,我无法测试此项,因为我正在使用手机回答此问题,并且我不知道您的实体变量。让我知道你做了什么改变使它工作,它将帮助其他人
有关更多信息,请查看
您可以在存储库中添加这些查询并重用它们。参考上的烹饪书
希望这有帮助。您可以像这样使用DQL查询
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery( 'SELECT c FROM Bundle:Category c WHERE c.language = :language AND c.active = 1 AND c.id NOT IN ( 2 ) ORDER BY c.language ASC' )
->setParameter('language', $language);
$category= $query->getResult();
很抱歉,我无法测试此项,因为我正在使用手机回答此问题,并且我不知道您的实体变量。让我知道你做了什么改变使它工作,它将帮助其他人
有关更多信息,请查看
您可以在存储库中添加这些查询并重用它们。参考上的烹饪书
希望这有帮助。如果您愿意,可以使用此语法
$repository = $this->getDoctrine()->getRepository('Bundle:Category');
$queryBuilder = $repository->createQueryBuilder();
$notInCategoryIds = array(2); // Category ids that will be excluded
$queryBuilder->select('c')
->from('Bundle:Category', 'c')
->where('c.language = :language')->setParameter('language', $language)
->andWhere('c.active = :active')->setParameter('active', 1)
->andWhere($queryBuilder->expr()->notIn('c.id', $notInCategoryIds)
->orderBy('c.sorting', 'ASC');
$results = $queryBuilder->getQuery()->getResult();
对于喜欢这种语法的其他开发人员来说,它可能会更有用
$repository = $this->getDoctrine()->getRepository('Bundle:Category');
$queryBuilder = $repository->createQueryBuilder();
$notInCategoryIds = array(2); // Category ids that will be excluded
$queryBuilder->select('c')
->from('Bundle:Category', 'c')
->where('c.language = :language')->setParameter('language', $language)
->andWhere('c.active = :active')->setParameter('active', 1)
->andWhere($queryBuilder->expr()->notIn('c.id', $notInCategoryIds)
->orderBy('c.sorting', 'ASC');
$results = $queryBuilder->getQuery()->getResult();
对于喜欢这种语法的其他开发人员来说,它可能会更有用