我有两个实体通过一对多的关系链接。招聘和应聘者一次招聘可能有多个应聘者。
我想列出所有招聘,并计算每个招聘有多少候选人。
我使用招聘存储库并将代码放入:
public function myFindAllRecruitment()
{
$qb = $this->createQueryBuilder('r');
$qb->select('r');
$qb->Join('r.candidat', 'c');
$qb->addSelect("COUNT(c.id) as candidatCount");
$qb->groupBy('r.id');
$qb->orderBy('r.id', 'DESC');
return $qb
->getQuery()
->getResult()
;
}在我的RecruitmentController中,我有:
$listRecruitment = $repository->myFindAllRecruitment();在我的细枝视图中,类似于:
{% for recruitment in listRecruitment %}
<tr>
{#(this is line 48)#}<td>{{ recruitment.id }}</td>
<td>{{ recruitment.titleFr }}</td>
<td>{{ recruitment.locationFr }}</td>......我得到这样的错误:在MyBundle:Recruitment:index.html.twig的第48行,键为"0,candidatCount“的数组的”键"id“不存在”
如果有人知道我的查询出了什么问题,那就太好了。谢谢
发布于 2017-06-19 14:43:46
好的,谢谢,我找到解决方案了。它位于细枝渲染中:
对象可通过和1或'candidatCount‘进行计数访问
代码示例:
{% for recruitment in listRecruitment %}
<tr>
<td>{{ recruitment[0].id }}</td>
<td>{{ recruitment[0].titleFr }}</td>
<td>{{ recruitment[0].locationFr }}</td>
<td>{{ recruitment[0].typePoste }}</td>
<td>{{ recruitment[0].dateins|date('Y-m-d') | localizeddate('full', 'none') }}</td>
<td>
{{ recruitment['candidatCount'] }}........查询结果也很好。谢谢
发布于 2017-06-18 17:51:36
所以你有一个像这样的候选实体
......
/**
* @ORM\ManyToOne(targetEntity="Recruitment", inversedBy="candidates")
*/
$recruitment;
....那么您的查询应该如下所示:
public function myFindAllRecruitment()
{
$qb = $this->createQueryBuilder('r');
$qb->select('r');
->addSelect('(SELECT count(c) FROM PATHTO\Bundle\Entity\Candidat as c WHERE c.rectuitment = r.id group by c.rectuitment) as count)');
->orderBy('r.id', 'DESC');
return $qb->getQuery()->getResult();
}您将得到如下输出:
[
0 => [
'rectuitment' => ...Object,
'count'=> ...,
...
]https://stackoverflow.com/questions/44611205
复制相似问题