そんな感じ:
$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]);