使用连接时使用列值作为数组键的Symfony原则

时间:2015-08-12 13:25:16

标签: symfony doctrine-orm doctrine query-builder

我试图在使用queryBuilder获取结果时找到如何使用列值作为数组键。我发现了这个问题Using column value as array index in doctrine,但遗憾的是,由于我正在使用左连接,因此无效。

目前我有这个问题:

        $qb = $entityManager->createQueryBuilder('translation');
    $qb->select('translation')
        ->from('MainBundle:PageTranslation', 'translation', 'translation.id')
        ->leftJoin('MainBundle:Page', 'page', 'WITH', 'IDENTITY(translation.page) = page.id')
        ->where('translation.locale = :locale')
        ->andWhere('translation.enabled = :enabled')
        ->andWhere('page.category = :category')
        ->setParameter('category', $category)
        ->setParameter('locale', $locale)
        ->setParameter('enabled', true);
    $result = $qb->getQuery()->getResult();

结果我得到的数组键以0开头并递增1。我需要数组键是页面ID(page.id)或翻译的IDENTITY页面

1 个答案:

答案 0 :(得分:0)

如果您查看QueryBuilder API,我会发现innerJoin()方法有$indexBy作为最后一个参数。通过'translation.id'或(翻译的pk而不是' id')作为最后一个参数,以获得所需的结果。