2017-05-17 10 views
0

저는 querybuilder를 사용하여 EntityRepository로 쿼리를 작성합니다. 나는 ManyToOne 관계 (ID에 의해) 대신 관계의 값으로 쿼리를 주문하려고 해요. 아래 코드 스 니펫.Symfony3 QueryBuilder orderBy 엔티티 필드

namespace AppBundle\Entity\Repository; 
class ContratoRepository extends EntityRepository 
{ 

    public function getWithoutParams($ops) 
    { 

     $query=$this->createQueryBuilder('e') 
      ->orderBy('e.proc','ASC'); 
     return $query->getQuery()->getResult(); 
    } 

이제 내 기업

namespace AppBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 
/** 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="AppBundle\Entity\Repository\ContratoRepository") 
*/ 

    class Contrato 
    { 
... 
    /** 
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\ContratosAdmin\Proc") 
     * @ORM\JoinColumn(name="id_proc", referencedColumnName="id_proc") 
     * @ORM\OrderBy({"name" = "ASC"}) 
     **/ 
     private $proc; 

이제 내 질문에, 그것은 내 PROC 법인 내부의 "이름"필드에 의해 주문 가능합니까? 지금은 그대로 이드의 주문입니다.

감사합니다. 감사합니다.

+1

'ContratoRepository'에서'Contrato'와'Proc' 엔티티의 데이터를 검색하기 위해'join' 요청을 시도하십시오. queryBuilder 요청에서'-> orderBy ('p.name', 'ASC');''p '는'Proc' 엔티티를 나타냅니다. –

+0

감사합니다 Grechka 내 문제가 해결되었습니다. – Noize

답변

2

그것은 교리 문서에 따라 가능해야한다 : http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/ordered-associations.html

하지만 비트가 달리 해 orderBy 주석 쿼리에 포함되지 않습니다 쿼리를 조정해야이에 따라. 해 orderBy이 경우에 자동으로 추가해야 할 문서에 따르면

public function getWithoutParams($ops) 
    { 
     $query=$this->createQueryBuilder('e') 
       ->select('e, p') 
       ->leftJoin('e.proc', 'p'); 

     return $query->getQuery()->getResult(); 
    } 

:

이 쿼리를 사용해보십시오.

주석없이 사용하려면 Grechka와 같은 수동 주문을 추가하면됩니다.

+0

니스, 주문 주석이 있다는 것을 결코 알지 못했습니다 :) –