gpt4 book ai didi

php - Doctrine QueryBuilder 和 concat 问题

转载 作者:可可西里 更新时间:2023-11-01 12:41:09 26 4
gpt4 key购买 nike

我有以下代码,它依赖于 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 辅助函数有某种关系,并且该函数需要枚举输入但不知何故(?)收到了一个逗号(,)。

上面的代码有什么问题?数小时的搜索未能解决问题。

谢谢大家的帮助!

最佳答案

问题出在这部分:

$qb->expr()->concat(' ', 'p.lastName')

你不能像教义期望的那样把空格放在这里。试试这个:

$qb->expr()->concat($qb->expr()->literal(' '), 'p.lastName')

关于php - Doctrine QueryBuilder 和 concat 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587578/

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