2014-12-29 69 views
0

我如何在Symfony2中創建自定義查找器,我可以從對象上下文(如getter方法)中調用而不是存儲庫上下文。這是我在EntityRepository類查詢:在Symfony2中選擇實體getter方法中的相關實體

public function getUpVotes($trip_id) 
{ 
    return count($this->getEntityManager() 
     ->createQueryBuilder() 
     ->select('t') 
     ->from('VputiTripBundle:Trip', 't') 
     ->join('t.ratings', 'r') 
     ->where('r.trip = :tid') 
     ->andWhere('r.up = :up') 
     ->setParameters(['tid' => $trip_id, 'up' => 1]) 
     ->getQuery() 
     ->getResult()); 
} 

的目標做到這一點,是我將能夠調用這個$模型 - > getUpVotes(),而不是調用實體倉庫和manualy傳遞參數。

+0

實體無權訪問實體管理器。注入經理是皺眉,而不是真的很漂亮。給原則2一個機會,通過在原始查詢中加載你的投票或創建一個投票服務來做「正確的方式」。如果所有這些仍然感覺尷尬,那麼切換到活動記錄實施。 – Cerad

回答

3

如果你有關聯設置,那麼你可以使用帶有過濾器的get。

public function getUpVotes() 
{ 
    return $this->ratings->filter(
     function (RatingInterface $rating) { 
      return 1 === $rating->getUp(); 
     } 
    ); 
}