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 回答