2014-11-13 4 views
0

Doctrine Behaviors를 사용하여 번역을 구성했습니다. 그러나 소나타 관리 목록보기에는 Doctrine 비헤이비어를 사용하여 저장된 엔티티의 모든 번역이 표시됩니다. 그러나 현재 로캘 번역 만 표시하면됩니다. 엔티티에서 함수를 만들고 transnationalals 테이블에서 변환을 얻었습니다. 그리고 그것은 잘 작동했습니다.Sonata Admin & KNP Doctrine Behaoviour Traslations

하지만 이제 성능 문제가되었습니다. 각 레코드 에서처럼 변환 테이블을 참조하고 쿼리가 실행되면 뷰에 표시되고 시스템이 축소되는 약 3000 개의 행이 있습니다.

테이크 변환 입력 양식에 구현하려면 a2lix 번역 양식을 구성해야합니다.

sonata Admin에서 현재 로캘을 사용하여 단일 번역을 표시 할 수있는 방법이 있습니까?

답변

2

번역 테이블에 조인을 넣어야 각 레코드에 대해 데이터베이스를 참조하는 쿼리 수가 줄어 듭니다. 그러면 현재 객체를 검사 할 것입니다.

처럼 :

public function createQuery($context = 'list') { 
    $query = parent::createQuery($context); 

    $query->addSelect('tl'); 
    $query->innerJoin($query->getRootAlias() . ".translations", "tl"); 

    return $query; 
} 

그것은 소나타 관리자에서 일하게 될 것입니다. sonata admin 이외의 다른 작업을 원하면 저장소에 조인을 넣을 수 있습니다.