2014-09-02 3 views
2

IN CHAR_LENGTH를 사용하는 방법 내가 필요한 것 :는 DQL

  • 내가 내림차순 순서 텍스트를 정렬해야합니다. https://gist.github.com/smottt/1615966 : 내가 링크를 참조해야

     $from='Entities\EventOrganizer eo'; 
         $qb = $this->em->createQueryBuilder(); 
         $qb->select('eo.metadata ') 
         ->add('from', $from) 
         ->where('eo.event = '.$this->event->getId()) 
         ->andWhere('eo.edition='.$this->event->getEventEdition()->getId()) 
         ->andWhere('eo.organizerType=5') 
         ->andwhere("eo.entityType='U'") 
         ->andwhere("eo.published=1") 
         ->orderBy('char_length(eo.metadata)','desc'); 
         $query = $qb->getQuery(); 
         $result = $query->getResult(); 
         echo $query->getSQl(); 
         $this->cache->SaveObject($str, $result); 
    
    • :

    여기 내 DQL 쿼리입니다.

  • 내가 config.yml 파일에 변경

오류 메신저 점점

entity_managers: 
    default: 
     dql: 
      numeric_functions: 
       char_length:  
Acme\bundlename\Extension\Doctrine\Query\Mysql\CharLength. 
을 한 링크에 따라 : 내가 잘못했을 경우

 PHP Fatal error: Uncaught exception 'Doctrine\\ORM\\Query\\QueryException' 
     with message 'SELECT eo.metadata FROM Entities\\EventOrganizer eo WHERE eo.event 

    = 127632 AND eo.edition=10 AND eo.organizerType=5 AND eo.entityType='U' AND 
    eo.published=1 ORDER BY length(eo.metadata) desc' in /home/ind/public_html/serve-bizt- 
    com/application/libraries/Doctrine/ORM/Query/QueryException. 

답변

1

당신이 찾고있는 기능은

LENGTH() 

이며 쿼리

$from='Entities\EventOrganizer eo'; 
    $qb = $this->em->createQueryBuilder(); 
    $qb->select('eo.metadata, LENGTH(eo.metadata) AS HIDDEN len') 
    ->add('from', $from) 
    ->where('eo.event = '.$this->event->getId()) 
    ->andWhere('eo.edition='.$this->event->getEventEdition()->getId()) 
    ->andWhere('eo.organizerType=5') 
    ->andwhere("eo.entityType='U'") 
    ->andwhere("eo.published=1") 
    ->orderBy('len','desc'); 
    $query = $qb->getQuery(); 
    $result = $query->getResult(); 
    echo $query->getSQl(); 
    $this->cache->SaveObject($str, $result); 

HIDDEN 당신이 결과를 구문 분석하지 않으려면 중요하다이 같은 일 것입니다;)

그러나 EO 저장소에서 더 나은 쿼리를 구현하십시오.

내가 몇 시간 형태로이 문제에 갇혀 한 도움
$query_builder = $this->createQueryBuilder('eo') 
        ->select('eo.metadata, LENGTH(eo.metadata) AS HIDDEN len') 
        ->where('eo.event = :event_id') 
        ->andWhere('eo.edition = :event_edition_id') 
        ->andWhere('eo.organizerType=5') 
        ->andwhere("eo.entityType='U'") 
        ->andwhere("eo.published=1") 
        ->orderBy('len','desc') 
        ->setParameter('event_id', $this->event->getId()) 
        ->setParameter('event_edition_id',$this->event->getEventEdition()->getId(); 

    $result = $query_builder->getQuery()->getResult(); 

http://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html#dql-functions

+0

감사 SR은 SR – user2818060

+0

감사합니다 :) 당신은 환영합니다 – felipep