2017-05-17 9 views
0

私はquerybuilderでEntityRepositoryとしてクエリを作成しています。私は代わりに関係の値でクエリを注文しようとしている(IDによる)ManyToOne関係を持っています。以下のコードスニペット。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

いいね、注文の注釈があることを知らなかった:) –