教义查询生成器Bug? [英] Doctrine Query Builder Bug?
问题描述
$ 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屋!