在 Symfony2 中将 id 作为参数发送

Send id as a parameter in Symfony2

如何为 getNumberOfTasks() 设置 id 参数? id 参数应具有数据库中 id 字段的值。我已经完成了 $entities->getId() 但我收到一个错误,如 Trying to get 属性 of non-object DefaultController.php

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

    $entities = $em->getRepository('TestBundle:Projects')->findAll();
    $tasks = $em->getRepository('TestBundle:Tasks')->getNumberOfTasks($entities->getId);
    /*dump($entities);
    die();
    */


    return $this->render('TestBundle:Default:index.html.twig', [
                'projects' => $entities,
                'tasks' => $tasks,
            ]
    );
}

任务存储库

public function getNumberOfTasks($id)
{
    $qb = $this->createQueryBuilder('p')
               ->where('p.projects = :id')
               ->setParameter('id', 1)
               ->getQuery();
    return count($qb->getResult());
}

public function getNumberOfCompletedTasks($id)
{ 
    $qb = $this->createQueryBuilder('p')
               ->where('p.projects = :id','p.completed = 1')
               ->setParameter('id', 1)
               ->getQuery(); 
    return count($qb->getResult());
}

public function getPercentComplete($id)
{
    $numberOfTasks = $this->getNumberOfTasks($id);
    $numberOfCompletedTasks = $this->getNumberOfCompletedTasks($id); 

    if($numberOfTasks == 0)
            return 100;

    return ($numberOfCompletedTasks / $numberOfTasks) * 100;
}

行: $entities = $em->getRepository('TestBundle:Projects')->findAll(); 正在返回一个对象数组。

如果你想拥有 id,你应该在实体中迭代:

foreach ($entities as $entity) { 
    $tasks[] = $em->getRepository('TestBundle:Tasks')->getNumberOfTasks($entity->getId);
 }

然后在树枝中迭代 tasks