如何在使用教义进行左连接后计算元素

时间:2013-09-12 17:00:45

标签: codeigniter join orm doctrine dql

我有2个表:“用户”和“国家”。我假装要做的是计算有多少用户来自某个州,即:

表示总用户数 圣菲5 布宜诺斯艾利斯20

等等。

我正在使用带有学说的codeigniter,这是我的代码:

public function countByState(){
    $this->qb = $this->em->createQueryBuilder();

    $this->qb->select('s.state_id', $this->qb->expr()->count('u.state'))
             ->from('models\States', 's')
             ->leftJoin('s.state_id' , 'u')
             ->leftJoin('models\User', 'u')
             ->groupBy('s.state_id');

    $query = $this->qb->getQuery();
    $obj = $query->getResult();

    return $obj;        
}

这是错误: 致命错误:未捕获异常'Doctrine \ ORM \ Query \ QueryException',消息'[Semantical Error]第0行,第76行'u LEFT JOIN models \ User':错误:类模型\ States在C中没有名为state_id'的关联第47行:\ Desarrollo \ new_frame_doctrine \ site \ application \ libraries \ data \ Doctrine \ ORM \ Query \ QueryException.php

1 个答案:

答案 0 :(得分:0)

请使用此SQL查询

SELECT s.name,count(*) FROM `users` u left join `state` s on u.stateid=s.id 
 group by s.id;

在代码中请相应更改!!

我通过创建两个名为state的表(包含字段id and name)来尝试此操作 和用户(使用字段id, name and state_id),它对我来说很好。

干杯!!!