Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接时出现条令查询生成器错误_Sql_Symfony_Doctrine Orm - Fatal编程技术网

Sql 连接时出现条令查询生成器错误

Sql 连接时出现条令查询生成器错误,sql,symfony,doctrine-orm,Sql,Symfony,Doctrine Orm,如何使用条令查询生成器编写以下内容 SELECT registry.id , registry.couple_id, registry.gift_id, Sum(purchase.amount) as totalContribution, gift.title, gift.price FROM gift, registry LEFT JOIN purchase ON purchase.registry_id = regist

如何使用条令查询生成器编写以下内容

SELECT
    registry.id ,
    registry.couple_id,
    registry.gift_id,
    Sum(purchase.amount) as totalContribution,
    gift.title,
    gift.price
FROM
    gift,
    registry
LEFT JOIN
    purchase ON purchase.registry_id = registry.id
WHERE
    registry.gift_id = gift.id
    AND registry.couple_id = 1 
GROUP BY
    registry.couple_id,
    registry.gift_id
我试过:

$qb = $this->createQueryBuilder('g') //gift
    ->from('\BBB\GiftBundle\Entity\Registry', 'reg')
    ->select('g.id , g.title, g.description, g.price, g.imageMedium')
    ->addSelect('SUM(p.amount) as totalContribute')
    ->leftJoin('\BBB\GiftBundle\Entity\Purchase', 'p', 'ON','reg.id = p.registry')
    ->where('reg.gift = g.id')
    ->AndWhere('reg.couple = :coupleID')
    ->orderBy('reg.id','DESC')
    ->groupBy('reg.couple')
    ->groupBy('reg.gift')
    ->setParameter('coupleID', $coupleID);
但它给了我以下错误:

[语义错误]第0行,第178列,靠近'p ON reg.id=':错误:标识变量BBB\GiftBundle\Entity\Purchase在联接路径表达式中使用,但之前未定义


DQL只能联接与当前实体相关的表(在此DQL中为
Registry
)。您的
注册表
实体将需要具有声明的OneToMany关系

假设此关系被称为
purchases
,您将这样加入:

->leftJoin('reg.purchases', 'p')

谢谢你的回复,但我只有一个关系,我有很多购买。在这种情况下,我该怎么写呢?如果你不想有一个双向的关系,那么你需要写一封信。