2013-08-04 53 views
0

我有一個實體的Knp Doctrine行爲可翻譯和可扼要。一切工作正常,所以當我創建或更新一個條目時,從標題生成的每種語言都有一塊。可翻譯的Knplabs:如何通過可翻譯字段找到條目?

問題是我怎樣才能找到一個翻譯slu entry的條目?

這會引發錯誤 「沒有場 '塞'」:

$this->getDoctrine()->getRepository('AcmeTestBundle:News')->findOneBySlug($slug); 

回答

2

除非有人有這樣做的更聰明的方式,那麼你就需要創建執行加入到實體轉換表來執行您的查找自定義庫的方法:

use Doctrine\ORM\EntityRepository; 

/** 
* NewsRepository 
*/ 
class NewsRepository extends EntityRepository 
{ 
    public function findOneBySlug($slug) 
    { 
     $qb = $this->createQueryBuilder('n') 
      ->select('n, t') 
      ->join('n.translations', 't') 
      ->where('t.slug = :slug') 
      ->setParameter('slug', $slug); 

     return $qb->getQuery()->getSingleResult(); 
    } 
} 

我發現這個方法雖然我仍然好奇,如果有一個更通用的解決方案,這個

0

試試這個:

$this->getDoctrine() 
->getRepository('AcmeTestBundle:News') 
->findOneBy(array("slug"=>$slug)); 

希望這有助於。

+0

不,它沒有幫助:「無法識別的領域:slu」「。我認爲問題是有兩個表格,一個是沒有翻譯的字段,一個是翻譯字段。 這是一個類似的問題,但與Gedmo捆綁,那裏你可以使用提示的查詢: http://stackoverflow.com/questions/14651738/how-to-combine-translatable-and-sluggable-from-doctrineextensions – user2535540