Symfony2 / Doctrine Cómo almacenar el recuento de objetos relacionados dentro de una entidad

He configurado un paquete que tiene un objeto de prueba que contiene una serie de objetos testQuestion, cada uno de los cuales es una pregunta y la respuesta dada (o 0 si no hay respuesta). De la ramita quiero poder obtener la información del objeto de prueba para decir cuántas preguntas hay y cuántas se han respondido.

He creado una consulta para sacar esto de la base de datos, y en la Entidad de prueba, he creado 2 nuevas propiedades para almacenar el número de preguntas y el número de respuestas. He creado un TestRepository dentro del cual reside la consulta. El objeto de prueba comprueba si el objeto tiene el valor establecido y, si no, lo carga cuando es necesario, ya que no siempre necesitaré esta información.

Sin embargo, estoy atascado en cómo vincular el código del repositorio al objeto de prueba, tanto para llamar a la función repo como para que la función de repo guarde los valores en el objeto de prueba 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 (Hay un método coincidente 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);
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta