gpt4 book ai didi

php - Doctrine Extensions REGEXP 在 Symfony2 中不起作用

转载 作者:行者123 更新时间:2023-12-05 03:13:10 25 4
gpt4 key购买 nike

我正在使用 Doctrine 2.1,需要在 MySQL 中使用 REGEXP。

Doctrine 的默认安装目前不支持 REGEXP,所以我使用 beberlei/DoctrineExtensions

我无法让 Doctrine 识别我的 REGEXP,我遵循了 SO 上的示例.

我正在使用 Doctrine 2.1 和 Symfony 2.7.1

这是代码,有什么想法吗?

配置

# config.yml
# Doctrine Configuration
doctrine:
dbal:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
keep_slave: true
slaves: %database_slaves%

orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
metadata_cache_driver: apc
query_cache_driver: apc
result_cache_driver:
type: service
id: cache
dql:
string_functions:
regexp: DoctrineExtensions\Query\Mysql\Regexp

存储库

// GroupRepository
$dql = "SELECT g FROM {$this->_entityName} g WHERE g.name REGEXP '^[:alpha:]'";
return $this->getEntityManager()->createQuery($dql)->getResult();

页面加载错误

// Error
CRITICAL - Uncaught PHP Exception Doctrine\ORM\Query\QueryException: "[Syntax Error] line 0, col 64: Error: Expected =, <, <=, <>, >, >=, !=, got 'REGEXP'" at /symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php line 52

更新:

我已经更新了查询以匹配预期的格式

    $dql = "SELECT g FROM {$this->_entityName} g WHERE REGEXP(g.name, '^[:alpha:]')";

现在我开始收到一个新错误:

[Syntax Error] line 0, col -1: Error: Expected =, <, <=, <>, >, >=, !=, got end of string.

最佳答案

我通过 github page 找到了解决方案为项目

Doctrine 要求所有 where 子句都需要比较运算符,即使像 REGEXP 这样的子句不需要它。

$dql = "SELECT g FROM {$this->_entityName} g WHERE g.status = 1 AND REGEXP(g.name, '^[^[:alpha:]]') = 1";

我的正则表达式字符类在我原来的问题中也不正确。

关于php - Doctrine Extensions REGEXP 在 Symfony2 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31054973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com