2012-05-09 71 views
1

例如,考慮頭版如Jobeet的教程:是否可以在另一個內部使用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; 
    } 

}

所以內部控制器我不」必須使用服務層爲兩個庫的使用。

有人可以給我任何建議嗎?

回答

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

我不能這樣做。我想通過單個類別獲得10條記錄,所以我需要爲每個類別調用SQL查詢。類似於Symfony 1 Jobeet教程。我只想避免使用服務層將活動作業與類別合併。 – keram

+0

恕我直言,如果版本庫clas允許我使用EM裏面我可以使用另一個回購。我想確定這是一個很好的設計實踐。 – keram

+0

你可以做到。它似乎不是一個不好的做法,因爲您可以使用Repository中的EntityManager。 – AlterPHP

相關問題