2013-08-04 11 views
0

나는 Knp Doctrine 비헤이비어가 번역 가능하고 Sluggable 인 엔티티가 있습니다. 모든 항목이 올바르게 작동하므로 항목을 만들거나 업데이트 할 때 제목에서 생성 된 각 언어에 대한 슬러그가 있습니다.번역 가능한 언어 : 번역 가능한 필드로 항목을 찾는 방법은 무엇입니까?

질문은 어떻게 번역 된 슬러그로 항목을 찾을 수 있습니까?

$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

아니, 도움이되지 않는다 : "인식 할 수없는 필드 : 슬러그". 문제는 번역이없는 필드와 번역이없는 필드에 각각 2 개의 테이블이 있다는 것입니다. 비슷한 질문이지만 Gedmo Bundle을 사용하면 다음과 같은 힌트를 사용할 수 있습니다. http://stackoverflow.com/questions/14651738/how-to-combine-translatable-and-sluggable-from-doctrineextensions – user2535540