与学说进行左连接后如何计算元素
Posted
技术标签:
【中文标题】与学说进行左连接后如何计算元素【英文标题】:how to count elements after making a left join with doctrine 【发布时间】:2013-09-12 17:00:44 【问题描述】:我有 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] line 0, col 76 near 'u LEFT JOIN models\User':错误:类模型\States 在 C 中没有名为 state_id 的关联:\Desarrollo\new_frame_doctrine\site\application\libraries\data\Doctrine\ORM\Query\QueryException.php 在第 47 行
【问题讨论】:
@AmitKumar thanx amit,我知道如何在 sql 中做到这一点,但在 dql 中不知道,所以这就是问题 【参考方案1】:请使用这个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
),对我来说效果很好。
干杯!!!
【讨论】:
以上是关于与学说进行左连接后如何计算元素的主要内容,如果未能解决你的问题,请参考以下文章