Gen*_*liu 7 php symfony doctrine-orm
我有以下代码,它依赖于Doctrine的QueryBuilder API来生成DQL状态.
class PlayerRepository extends EntityRepository
{
    public function findByPartialNameMatch($trainer, $fullName)
    {
        $qb = $this->createQueryBuilder('tp');
        $qb->innerJoin('tp.player', 'p')
            ->where($qb->expr()->andX(
                    $qb->expr()->orX(
                        $qb->expr()->like(
                            $qb->expr()->concat('p.firstName', $qb->expr()->concat(' ', 'p.lastName')),
                            $qb->expr()->literal($fullName.'%')
                        ),
                        $qb->expr()->like(
                            $qb->expr()->concat('p.lastName', $qb->expr()->concat(' ', 'p.firstName')),
                            $qb->expr()->literal($fullName.'%')
                        )
                    ),
                    $qb->expr()->eq('tp.trainer', '?1')
                 )
             )
        ->groupBy('p.id')
        ->orderBy('p.lastName', 'ASC')
        ->orderBy('p.firstName', 'ASC')
        ->setParameter(1, $trainer);
    return $qb->getQuery()->getResult();
}
}
当我运行它时,Symfony2抛出以下错误消息:
[Syntax Error] line 0, col 123: Error: Expected StateFieldPathExpression | string |      InputParameter | FunctionsReturningStrings | AggregateExpression, got ',' 
查看堆栈跟踪,显示以下内容:
at QueryException ::syntaxError ('line 0, col 123: Error: Expected   StateFieldPathExpression | string | InputParameter | FunctionsReturningStrings |  AggregateExpression, got ','')
in D:\Work\vendor\doctrine\lib\Doctrine\ORM\Query\Parser.php at line 396  -+
at Parser ->syntaxError ('StateFieldPathExpression | string | InputParameter |  FunctionsReturningStrings | AggregateExpression')
in D:\Work\vendor\doctrine\lib\Doctrine\ORM\Query\Parser.php at line 2391  -+
at Parser ->StringPrimary ()
in D:\Work\vendor\doctrine\lib\Doctrine\ORM\Query\AST\Functions\ConcatFunction.php at line 60  -+
at ConcatFunction ->parse (object(Parser))
in D:\Work\vendor\doctrine\lib\Doctrine\ORM\Query\Parser.php at line 2852  -
从上面可以看出,这个问题与concat helper函数有某种关系,并且该函数需要枚举输入,但不知何故(?)收到了一个逗号(,).
上面的代码有什么问题?搜索时间无法解决问题.
谢谢你的帮助!
Pav*_*nin 27
问题在于这个部分:
$qb->expr()->concat(' ', 'p.lastName')
你不能只是放空间,因为教义期望这里有一些识别者.试试这个:
$qb->expr()->concat($qb->expr()->literal(' '), 'p.lastName')
| 归档时间: | 
 | 
| 查看次数: | 18672 次 | 
| 最近记录: |