首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Dql中使用Char_Length

如何在Dql中使用Char_Length
EN

Stack Overflow用户
提问于 2014-09-02 08:38:46
回答 1查看 1.9K关注 0票数 2

我需要的是:

  • 我需要按降序顺序排列顺序文本。

以下是我的dql查询:

代码语言:javascript
运行
复制
        $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);
  • 我有一个链接:https://gist.github.com/smottt/1615966
  • 根据链接,我对config.yml文件进行了更改 默认: dql: Acme\bundlename\Extension\Doctrine\Query\Mysql\CharLength.:numeric_functions: char_length:

错误得到:

代码语言:javascript
运行
复制
       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.
  • 请告诉我哪里做错了。char_length nor length正在工作,但是doc表示它的支持长度http://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html#dql-functions
  • 任何想法都是最受欢迎的。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-02 10:37:21

您要寻找的函数是

代码语言:javascript
运行
复制
LENGTH()

对于您的查询,它会像这样工作

代码语言:javascript
运行
复制
$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);

如果不想解析结果,隐藏是很重要的;)

但是尝试在EO存储库中实现一个更好的查询

代码语言:javascript
运行
复制
$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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25619200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档