Symfony1 获取symfony中关系表项的计数

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')->

如何获取每个作业下的条目数。让我们看一个JoeBET教程,这里我想展示每个作业提交的简历数量。

桌子

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
。我已经更新了答案,谢谢你的解释。但是我不明白我应该在哪里写这段代码,以及如何在模板中获得计数。你能再解释一下吗?我正在等你,如果你愿意,请过来