php 对象 数量,php – Symfony2 / Doctrine如何在实体中存储相关对象的数量

我已经设置了一个包含测试对象的包,该对象包含许多testQuestion对象,每个对象都是一个问题和给定的答案(如果没有答案则为0).从树枝上我希望能够从测试对象中获取信息,说明有多少问题以及已经回答了多少问题.

我创建了一个查询来将其从数据库中拉出来,在测试实体中我创建了2个新属性来存储问题的数量和回答的数量.我创建了一个查询所在的TestRepository. Test对象检查对象是否设置了值,如果没有,则在需要时加载它,因为我不总是需要这些信息.

但是我仍然坚持如何将存储库代码链接到测试对象,既调用repo函数又调用repo函数将值保存到相关的Test对象.

ACME / Quizbundle /测试/ 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(有一个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);

}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值