无法计算具有特定值的行 - Doctrine,Symfony2,mysql

时间:2014-08-02 16:30:58

标签: mysql sql symfony doctrine

我正在通过symfony2应用程序中的doctrine查询我的mysql数据库。我有一个基本的表格设置,其中包括一个id号码('id'),名称('name'),以及最后一列,如果该人已被联系('联系'),用0或1表示。我可以查询并获取总查询数(在$ inquiryCountTotal控制器中描述就好了。

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

出于某种原因,它似乎是在对ids进行求和,因为我有8个ids并且它正在吐出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
    ));
}

1 个答案:

答案 0 :(得分:1)

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

试试这个:

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