加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 默认情况下将自定义doctrine输出walker应用于所有

发布时间:2020-12-13 16:03:47 所属栏目:百科 来源:网络整理
导读:我写了以下自定义助行器来使用postgres的ilike而不是像: use DoctrineORMQuerySqlWalker;class IlikeWalker extends SqlWalker{ /** * Walks down a SelectClause AST node,thereby generating the desired SQL. * * @param $selectClause * @return str
我写了以下自定义助行器来使用postgres的ilike而不是像:

use DoctrineORMQuerySqlWalker;

class IlikeWalker extends SqlWalker
{
     /**
     * Walks down a SelectClause AST node,thereby generating the desired SQL.
     *
     * @param $selectClause
     * @return string The SQL.
     */
    public function walkLikeExpression($likeExpr)
    {
        $sql = parent::walkLikeExpression($likeExpr);
        $sql = str_replace('LIKE','ILIKE',$sql);
        return $sql;
    }
}

可以通过以下方式添加到任何查询:

$query->setHint( $query::HINT_CUSTOM_OUTPUT_WALKER,'DoctrineExtensionsWalkerBundleWalkerIlikeWalker' );

但是,如何启动服务或应用配置以自动将其用于每个查询?

解决方法

Doctrine 2.5在orm配置上有一个新选项defaultQueryHint.您可以为所有查询设置一次自定义助手:

<?php
/** @var DoctrineORMEntityManager $em */
$em->getConfiguration()->setDefaultQueryHint(
    Query::HINT_CUSTOM_OUTPUT_WALKER,'DoctrineExtensionsWalkerBundleWalkerIlikeWalker'
)

您可以在bundle类的boot方法中使用此代码:

class YouBundle extends Bundle
{
    public function boot()
    {
        parent::boot();
        $this->container
            ->get('doctrine.orm.entity_manager')
            ->getConfiguration()
            ->setDefaultQueryHint(
                Query::HINT_CUSTOM_OUTPUT_WALKER,'DoctrineExtensionsWalkerBundleWalkerIlikeWalker'
            );
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读