我试图在使用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页面
答案 0 :(得分:0)
如果您查看QueryBuilder API,我会发现innerJoin()
方法有$indexBy
作为最后一个参数。通过'translation.id'
或(翻译的pk而不是' id')作为最后一个参数,以获得所需的结果。