1

たとえば、Jobeetチュートリアルのようにフロントページを考えてみましょう。

クラスCategoriesRepositoryはEntityRepositoryを拡張します{

  public function getWithJobs($limit)
  {
    $categories = $this->getContainingJobs();
    $jobsRepo = $this->em->getRepository("JobeetBundle:Jobs");
    foreach($categories as $c) {
      $c->setActiveJobs($jobsRepo->getActiveJobsByCategory($c->id, $limit);
    }
   return $categories;
  }

}

したがって、コントローラー内では、両方のリポジトリーを使用するためにサービスレイヤーを使用する必要はありません。

誰かアドバイスをいただけますか?

4

1 に答える 1

1

カテゴリとジョブの間に関連付けを定義した場合は、別のリポジトリを呼び出す必要はありません。DQLクエリに参加させることで、関連するジョブがすでに設定されているカテゴリエンティティを取得します...

この場合の公式ドキュメントは次のとおりです:http ://symfony.com/doc/current/book/doctrine.html#joining-to-related-records

そして、このドキュメントからの例:

// src/Acme/StoreBundle/Repository/ProductRepository.php

public function findOneByIdJoinedToCategory($id)
{
    $query = $this->getEntityManager()
        ->createQuery('
            SELECT p, c FROM AcmeStoreBundle:Product p
            JOIN p.category c
            WHERE p.id = :id'
        )->setParameter('id', $id);

    try {
        return $query->getSingleResult();
    } catch (\Doctrine\ORM\NoResultException $e) {
        return null;
    }
}
于 2012-05-09T12:05:02.083 に答える