Symfony1 获取symfony中关系表项的计数
如何获取每个作业下的条目数。让我们看一个JoeBET教程,这里我想展示每个作业提交的简历数量。 桌子Symfony1 获取symfony中关系表项的计数,symfony1,symfony-1.4,Symfony1,Symfony 1.4,如何获取每个作业下的条目数。让我们看一个JoeBET教程,这里我想展示每个作业提交的简历数量。 桌子 job : id title submit : id job_id file 结果: title submits job a 5 old job 20 我在使用教义。那么,我怎样才能做到这一点呢?类似这样的事情: $job = Doctrine_Core::getTable('Job')->
job : id title
submit : id job_id file
结果:
title submits
job a 5
old job 20
我在使用教义。那么,我怎样才能做到这一点呢?类似这样的事情:
$job = Doctrine_Core::getTable('Job')->find(1);
// it will query the database to fetch the relation
$submit = $job->getSubmit()->count();
但是如果您想要更具体的内容,请向我们展示您的schema.yml.
如果要避免对数据库进行新的查询,可以使用leftJoin
获取关系:
$job = Doctrine_Core::getTable('Job')
->leftJoin('Job.Submit')
->find(1);
// the relation is already fetched, so it won't perform a new query
$submit = $job->getSubmit()->count();
顺便说一句,要小心使用->count()
方法,如果您有很多提交,那么这个查询不会得到真正的优化。最好是执行手动查询计数:
$submit = Doctrine_Core::getTable('Submit')
->createQuery('s')
->select('COUNT(s.id) as total')
->where('s.job_id = ?', array($job->getId()))
// HYDRATE_NONE won't hydrate the return object
->execute(array(), Doctrine_Core::HYDRATE_NONE);
// I guess the value is here but test yourself
var_dump($submit[0]);
这太棒了。我也在找同样的。让我知道getSubmit()的工作原理。这是因为两个表之间的关系而起作用,还是我可以在任何模型中使用它来获得计数。如何检查我是否只想要活动提交。like status='active'由于模型之间的关系名,它可以工作。它将自动加载作业1的关系。如果要避免对数据库进行新查询,可以将关系添加为查询中的
leftJoin
。我已经更新了答案,谢谢你的解释。但是我不明白我应该在哪里写这段代码,以及如何在模板中获得计数。你能再解释一下吗?我正在等你,如果你愿意,请过来