0

各ジョブのエントリ数を取得するにはどうすればよいですか。jobeetチュートリアルを見てみましょう。ここでは、各ジョブの履歴書の送信数を示します。

テーブル

job : id  title      
submit : id job_id file

結果 :

 title           submits    
 job a             5
 old job           20

私はDoctrineを使用しています。だから、どうすればこれを行うことができますか?

4

1 に答える 1

1

そんな感じ:

$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]);
于 2012-11-26T08:10:53.027 に答える