Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
Php 连接取决于第二个非相关连接,原则2_Php_Mysql_Doctrine Orm - Fatal编程技术网

Php 连接取决于第二个非相关连接,原则2

Php 连接取决于第二个非相关连接,原则2,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,我在一个查询生成器中工作,目的是返回经销商付款的排名。分销商通过非外键列(affiliateCode)与其客户关联,因此我需要将此联接与依赖于此非键联接的实体列表关联起来 结果我就这样结束了,但它不起作用。虽然没有抛出错误 $queryBuilder = $this->getEntityManager()->createQueryBuilder(); $queryBuilder->select('SUM(pay.value) as total_points, cli.i

我在一个查询生成器中工作,目的是返回经销商付款的排名。分销商通过非外键列(affiliateCode)与其客户关联,因此我需要将此联接与依赖于此非键联接的实体列表关联起来

结果我就这样结束了,但它不起作用。虽然没有抛出错误

$queryBuilder = $this->getEntityManager()->createQueryBuilder();
    $queryBuilder->select('SUM(pay.value) as total_points, cli.id as client_id')
        ->from('Application\Model\Payment', 'pay')
        ->innerJoin('pay.subscription', 'sub')
        ->innerJoin('sub.client', 'representative')
        ->innerJoin(
            'representative.userCollection',
            'seller',
            'WITH',
            'seller.affiliateCode = cli.affiliateCode'
        )
        ->innerJoin('seller.clientCollection', 'cli')
        ->where(
            '
                pay.status = :donePaymentStatus
                AND representative.affiliateCode IS NOT NULL
            '
        )
        ->groupBY('cli.id')
        ->orderBY('total_points', 'DESC');

    $queryBuilder->setParameters([
        'donePaymentStatus' => PaymentStatus::DONE,
    ]);

如果我试图通过连接做的事情是不可能的,你能建议一个替代方案吗。可能是嵌套查询。

没有出现错误的原因是语法正确,但逻辑错误。内部联接是您可以执行的最独占的联接—它将只返回符合所有条件的记录。使用较少的独占联接(左联接或右联接)可能会更幸运

维恩图有助于:


如果我使用非外键更改内部联接的左联接,我会得到结果,但缺少cli实体。也许doctrine对representative.userCollection越来越疯狂,因为它总是有一个外键,而我正试图使用其他的“非关系”来代替它?你有没有试过把它从查询生成器的手中拿出来,改为写一个DQL查询?可能会突出一两个问题。