Symfony2 / Doctrine Como armazenar contagem de objetos relacionados dentro de uma entidade

Eu configurei um pacote que tem um objeto de teste que contém um número de objetos testQuestion, cada um dos quais é uma pergunta e uma resposta dada (ou 0 se nenhuma resposta). De galho eu quero ser capaz de obter as informações do objeto de teste para dizer quantas perguntas existem e quantas foram respondidas.

Eu criei uma consulta para extrair isso do banco de dados e na entidade de teste eu criei duas novas propriedades para armazenar o número de perguntas e o número respondido. Eu criei um TestRepository dentro do qual a consulta reside. O objeto Test verifica se o objeto tem o valor definido e, se não, o carrega quando necessário, pois nem sempre precisarei dessas informações.

No entanto, estou preso em como vincular o código do repositório ao objeto de teste, tanto para chamar a função repo como para a função repo salvar os valores no objeto Test relevante.

Acme / Quizbundle / Test / Test.php

namespace Acme\QuizBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Acme\QuizBundle\Entity\TestRepository;

/**
 * @ORM\Entity(repositoryClass="Acme\QuizBundle\Entity\TestRepository")
 * @ORM\Table(name="test")
 */
class Test    {
protected $numQuestions = null;
protected $numQuestionsAnswered = null;

public function getNumQuestionsAnswered () {
    if (is_null($this->numQuestionsAnswered)) {
        $repository = $this->getEntityManager()->getRepository('\AcmeQuizBundle\Test');
        $values = $repository->calculateNumQuestions();
    }
    return $this->numQuestionsAnswered;
}

Acme / Quizbundle / Test / TestRepository.php (há um método de correspondência para getNumQuestions ())

namespace Acme\QuizBundle\Entity;

use Doctrine\ORM\EntityRepository;

class TestRepository extends EntityRepository {

private function calculateNumQuestions() {

    $qb = $this->getEntityManager()
                ->createQueryBuilder();

    $query = $this->getEntityManager()->createQueryBuilder()
                        ->select('COUNT(id)')
          ->from('testquestion', 'tq')
          ->where('tq.test_id = :id')
          ->setParameter('id', $this->getId())
          ->getQuery();

    $result = $query->getSingleScalarResult();
    var_dump($result);
    }

questionAnswers(1)

yourAnswerToTheQuestion