mysql - 计算具有特定值的行时出现问题 - Doctrine、Symfony2、mysql

标签 mysql sql symfony doctrine

我正在通过 symfony2 应用程序中的 Doctrine 查询我的 mysql 数据库。我设置了一个基本表,其中包括 ID 号(“id”)、姓名(“name”)以及最后一列,表示该人是否已被联系(“已联系”),用 0 或 1 表示。我可以查询并获取总查询数(在 Controller 中用 $inquiryCountTotal 描述就可以了。

我正在努力计算已联系的行数。我想我可以计算联系列中值为 1 的行,或者我可以对联系列中的所有行进行求和。

出于某种原因,它似乎正在对 id 进行求和,因为我有 8 个 id,但它吐出的数字是 36。

我哪里出错了?提前致谢!

public function indexAction()
{
    $em = $this->getDoctrine()->getManager();

    $entities = $em->getRepository('EABundle:Inquiry')
        ->findBy(array(), array('id'=>'DESC'));

    $inquiryCountTotal = $em->createQuery("
        SELECT count(id)
        FROM   EABundle:Inquiry id
    ")->getSingleScalarResult();

    //This is the part I'm struggling with...

    $inquiryCount = $em->createQuery("
        SELECT sum(contacted)
        FROM   EABundle:Inquiry contacted
    ")->getSingleScalarResult();

    return $this->render('EABundle:Inquiry:index.html.twig', array(
        'entities' => $entities,
        'inquiryCount' => $inquiryCount,
        'inquiryCountTotal' => $inquiryCountTotal
    ));
}

最佳答案

Doctrine 将别名解释为实体的 id。

试试这个:

$inquiryCount = $em->createQuery("
    SELECT sum(i.contacted)
    FROM   EABundle:Inquiry i
")->getSingleScalarResult();

关于mysql - 计算具有特定值的行时出现问题 - Doctrine、Symfony2、mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097145/

相关文章:

mysql - 在一个字段中保存的范围之间的 SQL 查询(例如 : 1;10)

javascript - 如何在 Sequelize 中更新外键 (belongsTo)

php - 从 TIMESTAMP 字段返回结果

mysql - 不同表上的简单触发器更新

sql - 通过SP增加MS SQL Server表中的int列

java - 准备语句: getIngredientByName

sql - 如何使用 "ON DELETE CASCADE"选项检查外部列是否是约束的一部分?

php - Symfony 2.5 中 ValidatorConstraint 的问题

javascript - Symfony、grunt、requires.js 和 Assetic

php - Symfony3 - SQLSTATE[HY000] [2002] 没有那个文件或目录