2012-05-09 4 views
1

、Jobeetのチュートリアルのようにフロントページを考慮する:EntityRepositoryを別のEntityRepository内で使用するのに有効ですか?例えば

クラス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; 
    } 

}

I」はいけないが、両方のリポジトリの使用のためのサービス層を使用する必要が延びています。

誰かから助言をいただけますか?

答えて

1

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

を取得し、この場合の公式ドキュメントです:http://symfony.com/doc/current/book/doctrine.html#joining-to-related-records

そしてこのdocから来る例:

// 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; 
    } 
} 
+0

私はこのようにすることはできません。私は単一のカテゴリで10レコードを取得したいので、私はすべてのカテゴリのSQLクエリを呼び出す必要があります。 Symfony 1 Jobeetチュートリアルのようなものです。私が欲しいのは、アクティブなジョブをカテゴリにマージするためのサービスレイヤの使用を避けることだけです。 – keram

+0

IMHOリポジトリclasでEMを使用できる場合は、別のリポジトリを使用できます。私はそれが良いデザインの練習であることを確かめたい。 – keram

+0

できます。リポジトリからEntityManagerを使用することはできません。 – AlterPHP

関連する問題