2015-02-12 4 views
-1

Как установить параметр id для getNumberOfTasks()? Параметр id должен иметь значение поля id из базы данных. Я сделал $ entities-> GetId() но я получаю сообщение об ошибке, как Попытка получить свойство необъектных DefaultController.phpОтправить идентификатор в качестве параметра в Symfony2

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; 
} 
+0

Я думаю, вы могли бы получить доступ задач в веточке. Можете ли вы показать нам сущности? –

+0

'$ entities' - это один объект или массив объектов? – xurshid29

+0

@ ZsoltGyöngyösi Да, я пробовал его с помощью {{projects.tasks | tasks}}, который дал мне общее количество задач. Но здесь я хочу, чтобы общее количество задач вычисляло процент оставшихся заданий. – Raaz

ответ

1

линии : $entities = $em->getRepository('TestBundle:Projects')->findAll(); возвращает массив объектов.

Вы должны перебирать в сущности, если вы хотите иметь идентификатор:

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

, а затем перебирать в прута для tasks

+0

Что делать, если мне нужно зацикливать задачи внутри другого цикла? – Raaz

+0

Вы можете, но я советую, немного пересмотреть архитектуру и использовать соединение, чтобы сделать один запрос к базе данных в вашем репозитории, доктрина - это не самая быстрая вещь, чем меньше запрос к базе данных, тем лучше. –

Смежные вопросы