教义查询生成器Bug? [英] Doctrine Query Builder Bug?

查看:220
本文介绍了教义查询生成器Bug?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在教条中遇到了一个问题。我已经使用queryBuilder构建了以下查询

  $ qb = $ query = $ this-> repoLibrary-> createQueryBuilder('升'); 

$ query = $ qb
- > innerJoin('l.productVariant','v')
- > innerJoin('v.product','p' )
- > innerJoin('p.taxons','t','WITH','t.id IN((array)')
- > where('l.user =用户')
- > groupBy('l.id HAVING count(DISTINCT t.id)> =:count')
- > setParameter('user',$ user)
- > setParameter('array',$ s)
- > setParameter('count',count($ taxons))
- > getQuery();

这是在执行之前记录的查询:

  SELECT s0_.id AS id0,s0_.consumed_at AS consum_at1,s0_.created_at AS created_at2,s0_.updated_at AS updated_at3,s0_.user_id AS user_id4,s0_.variant_id AS variant_id5 
FROM src_library s0_
INNER JOIN src_variant s1_ ON s0_.variant_id = s1_.id
INNER JOIN src_product s2_ ON s1_.product_id = s2_.id
INNER JOIN src_taxon_product s4_
ON s2_.id = s4_.product_id
INNER JOIN src_taxon s3_ ON s3_.id = s4_.taxon_id
AND(s3_.id IN(1,4))
WHERE s0_.user_id = 1
GROUP BY s0_.id HAVING count(DISTINCT s3_.id)=? [1,4,1,2]

当我执行此查询(插入参数后直接在MySQL中,它完美地工作,返回我正在寻找的2个结果。



然而,当它被Doctrine执行时,它返回一个空数组。



任何想法?

解决方案

以下答案。问题在于'IN'子句。如下所示:



https://groups.google.com/forum/#!topic/doctrine-dev/-_cINyk2dvs



我的问题是由事实上,我正在使用IN数组作为字符串。

  $ s =1,4

而不是

  $ s = array(1,4); 

这使得世界上有所不同,也让我感觉像一个n00b。


I have run into an issue in Doctrine. I have built the following query with queryBuilder

    $qb = $query = $this->repoLibrary->createQueryBuilder('l');

    $query = $qb
            ->innerJoin('l.productVariant', 'v')
            ->innerJoin('v.product', 'p')
            ->innerJoin('p.taxons', 't', 'WITH', 't.id IN (:array)')
            ->where('l.user = :user')
            ->groupBy('l.id HAVING count(DISTINCT t.id) >= :count')
            ->setParameter('user', $user)
            ->setParameter('array', $s)
            ->setParameter('count', count($taxons))
            ->getQuery();

Here is the query that is logged prior to execution:

  SELECT s0_.id AS id0, s0_.consumed_at AS consumed_at1, s0_.created_at AS created_at2, s0_.updated_at AS updated_at3, s0_.user_id AS user_id4, s0_.variant_id AS variant_id5 
  FROM src_library s0_ 
  INNER JOIN src_variant s1_ ON s0_.variant_id = s1_.id 
  INNER JOIN src_product s2_ ON s1_.product_id = s2_.id 
  INNER JOIN src_taxon_product s4_ 
  ON s2_.id = s4_.product_id 
  INNER JOIN src_taxon s3_ ON s3_.id = s4_.taxon_id
  AND (s3_.id IN (1,4)) 
  WHERE s0_.user_id = 1 
  GROUP BY s0_.id HAVING count(DISTINCT s3_.id) = ? ["1,4",1,2] 

When I execute this query (after inserting the parameters seen above) directly in MySQL it works perfectly, returning the 2 results that I'm looking for.

However, when it is executed by Doctrine it returns an empty array.

Any Ideas??

解决方案

After scouring the interwebs I found the following answer. The problem is with the 'IN' clause. As articulated here:

https://groups.google.com/forum/#!topic/doctrine-dev/-_cINyk2dvs

My problem was being caused by the fact that I was building the 'IN' array as a string.

$s = "1,4"

instead of

$s = array(1,4);

This made all the difference in the world, and also made me feel like a n00b.

这篇关于教义查询生成器Bug?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆