Published on

doctrine教程9---选择特定字段

原创文章,转载时需取得本人同意并注明来源
Authors
  • doctrine教程9---选择特定字段
    Name
    langziyang
    Twitter

如果我想查同时查平均数呢,我们可以添加一个逗号然后写AVG函数,或者使用addSelect()方法,可能看起来更好一些,

$result = $this->createQueryBuilder('fortuneCookie')
            ->select('SUM(fortuneCookie.numberPrinted) AS fortunesPrinted')
            ->addSelect('AVG(fortuneCookie.numberPrinted) fortunesAverage')

可以看到AS是可选的,然后我们想看category名称时我们不再从对象中获取,而是添加到查询中

->addSelect('category.name')

但是我们会得到一个错误:

[Semantical Error] line 0, col 110 near 'category.name': Error: 'category' is not defined.

因为我们还没有JOIN,所以添加join代码

->innerJoin('fortuneCookie.category', 'category')

因为现在会返回多个数据,所以我们要把->getSingleScalarResult()修改为->getSingleResult()

其实把category名称这样查出来根本没有必要,毕竟我们只显示了名称,但如果还选择了iconKey,那么我们就有可能完全避免查询 Category 对象。然而,虽然这可能会让我们的页面更快一点,但它几乎肯定是矫枉过正,并使我们的代码更加混乱。使用对象是最好的!

现在我们在调试栏可以看到有两条查询,这是正常的