Doctrine返回的联接查询结果分别存在不同数组中

4
$query = $this->createQueryBuilder('p');
$query
    ->select('s', 'p')
    ->innerJoin(
        'test\Entity\ProductQuantity',
        's',
        \Doctrine\ORM\Query\Expr\Join::WITH,
        'p.sku = s.sku'
    )
    ->orderBy('p.productId', 'DESC');

return $query->getQuery()->getResult();

这个查询必须返回2个表的结果,但我得到的是:

result = array(
[0] => 'table1',
[1]=> 'table2',
[2] => 'table1',
[3]=> 'table2',
)

为什么我在两个数组中得到了2个表格?这是联接查询,必须在一个数组中,如何将联接查询结果合并到一个数组中并获得以下结果:
result = array(
[0] => 'table1table2',
[1] => 'table1table2',
)
2个回答

9
您可以通过以下方式将结果作为数组获取:
$query->getQuery()->getScalarResult();

这是正确的做法!请用“getScalarResult()”替换“getResult()”。谢谢。 - Jpsy

3

解决方案是选择所需字段,然后结果是一个数组

    $query = $this->createQueryBuilder('p');
    $query
        ->select('p.sku', 's.quantity', 'p.priceAmount')
        ->innerJoin(
            'LeosEbayGateway\Entity\ProductQuantity',
            's',
            \Doctrine\ORM\Query\Expr\Join::WITH,
            'p.sku = s.sku'
        )
        ->orderBy('p.productId', 'DESC');

    return $query->getQuery()->getResult();

结果:

result = array(
[0] => 'table1table2',
[1] => 'table1table2',
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接