【发布时间】:2016-12-14 09:47:17
【问题描述】:
在应用程序 1 / 2 中:
$qb = $this->createQueryBuilder('tu');
$transUnits = $qb->select('tu, te')
->leftJoin('tu.translations', 'te')
->andWhere($qb->expr()->in('tu.id', $ids))
->andWhere($qb->expr()->in('te.locale', $locales))
->orderBy(sprintf('tu.%s', $sortColumn), $order)
->getQuery()
->getArrayResult();
and
$qb = $this->createQueryBuilder('tu');
$transUnits = $qb->select('tu, te')
->leftJoin('AppBundle:Translation', 'te')
->andWhere($qb->expr()->in('tu.id', $ids))
->andWhere($qb->expr()->in('te.locale', $locales))
->orderBy(sprintf('tu.%s', $sortColumn), $order)
->getQuery()
->getArrayResult();
使用完全相同的参数调用函数。
在第二种情况下,我将“tu.translations”替换为“AppBundle:Translation”,因为无法识别定义翻译的“翻译”:
<one-to-many field="translations" target-entity="TranslationBundle\Entity\Translation" mapped-by="transUnit">
<cascade>
<cascade-all/>
</cascade>
</one-to-many>
在第一种情况下,结果是:array(13) { ... },这是正确的格式结果;在第二种情况下,格式错误的结果是:array(70) { ... }
【问题讨论】:
-
在每个查询上调用
->getDQL(在->getQuery()之后),你会看到。 -
我添加注释。