【问题标题】:Doctrine Query Builder: match all valuesDoctrine Query Builder:匹配所有值
【发布时间】:2013-12-22 15:58:42
【问题描述】:

我有以下查询:

$filters is an array like this array('black', 'green', '50mm')

$query = $repository->createQueryBuilder('d')
        ->select('product', 'attribute')
        ->from('TwndleBackendBundle:Product', 'product')
        ->innerJoin('product.attributeValues', 'attribute')
        ->where('attribute.value IN (:value)')
        ->setParameter('value', $filters)
        ->getQuery();

这很好用。但我需要让该原则只返回具有所有这些过滤器的产品,而不仅仅是一个

【问题讨论】:

    标签: php symfony doctrine where-clause query-builder


    【解决方案1】:

    幸运的是你可以传递一个数组:

        public function findUsersByIdArray(array $usersIds)
        {
          if (count($usersIds) === 0) {
            return null;
          }
    
          $entityManager = $this->getEntityManager();
          $query = $entityManager->createQueryBuilder()
            ->addSelect('user')
            ->from("UserBundle:User", 'user')
            ->andWhere("user.id  in (:usersIds)")
            ->setParameter('usersIds', $usersIds)
            ->getQuery();
          $result = $query->getResult();
          return $result;
    
         }
    

    【讨论】:

      【解决方案2】:
      $query = $repository->createQueryBuilder('d')
              ->select('product', 'attribute')
              ->from('TwndleBackendBundle:Product', 'product')
              ->innerJoin('product.attributeValues', 'attribute')
              ->where('attribute.value ALL (:value)')
              ->setParameter('value', $filters)
              ->getQuery();
      

      还有:Subqueries with ALL

      【讨论】:

      • 尝试使用此处描述的 'ALL' 会出现此错误:“错误:预期 =、、>、>=、!=、得到 'ALL'”
      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2015-10-22
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      相关资源
      最近更新 更多