如何在自定义php项目中注册/使用/配置beberlei / DoctrineExtensions?

时间:2017-11-02 22:19:48

标签: php mysql regex doctrine-orm

我有自己的迷你php MVC,需要添加beberlei/DoctrineExtensions。我无法弄清楚,如何添加/配置和使用beberlei/DoctrineExtensions。目前,我有这样的配置:

require_once INC_ROOT . '/vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php';
use Doctrine\Common\ClassLoader;
$classLoader = new \Doctrine\Common\ClassLoader('Doctrine');
$classLoader->register();

$classLoader2 = new \Doctrine\Common\ClassLoader('DoctrineExtensions', '/vendor/beberlei/DoctrineExtensions');
$classLoader2->register();

我想选择类似于20aliasApp871的appIds,从任何数字后跟aliasApp字符串开始,然后是高于870的数字(但不会超过1500)。

    $appIds = $qb->select( 'a.id' )  
        ->from( 'BookBundle\Entity\App', 'a' )
        ->where ( ' REGEXP(a.aliasApp, .*aliasApp[189]{1}[0123456789]{2,3}) = true ')
        ->getQuery()
        ->getResult();

我收到致命错误:

    Fatal error: `Uncaught Doctrine\ORM\Query\QueryException: 
SELECT a.id FROM BookBundle\Entity\App a WHERE REGEXP(a.aliasApp, .*aliasApp[189]{1}[0123456789]{2,3}) = true` 
in vendor\doctrine\orm\lib\Doctrine\ORM\Query\QueryException.php:41 Stack trace: 
#0 \vendor\doctrine\orm\lib\Doctrine\ORM\Query\Parser.php(448): Doctrine\ORM\Query\QueryException::dqlError('SELECT a.id FRO...') 
#1 vendor\doctrine\orm\lib\Doctrine\ORM\Query\Parser.php(3379): Doctrine\ORM\Query\Parser->syntaxError('known function', Array) 
#2 vendor\doctrine\orm\lib\Doctrine\ORM\Query\Parser.php(3351): Doctrine\ORM\Query\Parser->CustomFunctionDeclaration()
#3 vendor\doctrine\orm\lib\Doctrine\ORM\Query\Parser.php(2810): Doctrine\ORM\Query\Parser->FunctionDeclaration() 
#4 vendor\doctrine\orm\lib\Doctrine\ORM\Query\QueryException.php on line 52

1 个答案:

答案 0 :(得分:0)

  • 请勿在表名中使用反斜杠。

  • REGEXP是一个运算符,而不是函数:WHERE a.aliasApp REGEXP '.*aliasApp[189]{1}[0123456789]{2,3}'

  • 抱怨Doctrine没有像MySQL那样提供有用的错误信息。