2017-12-19 14 views
0

PHPCR-ODM이있는 Document 클래스를 사용하면 fetch results with the class repository이 가능하며 결과는 문서 클래스가 아니고 데이터베이스 스키마에있는 sort_order 필드로 자동 정렬됩니다. 심포니 프로파일에 기록 쿼리의Doctrine phpcr-odm을 사용하여 sort_order로 정렬 결과

예 :이 단순히 쿼리 queryBuilder으로 구축

SELECT path FROM phpcr_nodes WHERE parent = ? AND workspace_name = ? ORDER BY sort_order ASC

:

$qb->from() 
     ->document('AppBundle\Document\Product', 'product') 
     ->end() 
     ->where() 
     ->neq()->field('product.type')->literal('category'); 
$query = $qb->getQuery(); 

결과는 다른 같은 분야 sort_order으로 분류되지 않은 쿼리를 사용하여 문서 클래스의 필드가 아니므로 orderBy 메서드를 사용할 수 없습니다.

그래서 어떻게 결과를 정렬 할 수 있습니까?

+0

여전히 혼란, "나중에 한 후 그 결과를"결과가 자동으로 문서 클래스에없는 sort_order''필드으로 분류되어 있습니다 "다시 읽기 'sort_order'와 같은 다른 쿼리와 같이 정렬되지 않습니다. 'sort_order' 열을 기준으로 쿼리를 정렬 하시겠습니까? 다른면에서는 AFAIK이 가능하지 않기 때문에 나머지 쿼리가 "sort_order"에 의해 어떻게 "자동으로"정렬되는지 모르겠다. – ReynierPM

답변

0

누가 orderBy()을 사용할 수 없다고 했습니까? 확실히 가능하기 때문에 read the docs해야합니다. sort_order은 아래를 참조로 동일한 코드를 사용하고 정렬 열을 가정 :

$qb->from() 
    ->document('AppBundle\Document\Product', 'product') 
    ->end() 
    ->where() 
    ->neq()->field('product.type')->literal('category') 
    ->orderBy()->desc()->field('product.sort_order'); 
+0

'orderBy()'를 사용할 수 있지만이 필드는 사용할 수 없기 때문에 내 Document 클래스가 아닙니다. – loicb

+0

그러면 문서에없는 것을 어떻게 정렬 할 것으로 예상합니까? 그건 나에게 어떤 의미가 없어! 'sort_order'는 다른 문서에서오고 QB에서'JOIN'을 사용하여 어디서나 같은 열에 도달하고 내 대답 – ReynierPM

+0

과 같은 개념을 적용합니다. DocumentRepository 클래스에서'find()'메소드를 사용하면 결과는이 입력란별로 정렬됩니다. 예를 들면 다음과 같습니다 :'SELECT path FROM phpcr_nodes where parent =? AND workspace_name =? ORDER BY sort_order ASC' – loicb