Symfony 在学说中有三个或三个以上的领域

Symfony 在学说中有三个或三个以上的领域,symfony,doctrine-orm,Symfony,Doctrine Orm,条令查询生成器只允许我连接两个字段 class Expr { // ... public function concat($x, $y); // Returns Expr\Func 要连接我使用的3个字段: $qb->expr()->concat( 'table.field1', $qb->expr()->concat('table.field2', 'table.field3') ); SQL将是: CONCAT('table.field1', CO

条令查询生成器只允许我连接两个字段

class Expr {
// ...
public function concat($x, $y); // Returns Expr\Func
要连接我使用的3个字段:

$qb->expr()->concat(
    'table.field1',
    $qb->expr()->concat('table.field2', 'table.field3')
);
SQL将是:

CONCAT('table.field1', CONCAT('table.field2', 'table.field3'))
如何获得1concat

当我试着直接打电话的时候

new Expr\Func('CONCAT', array('table.field1', 'table.field2', 'table.field3'));
执行查询时出错

[语法错误]第0行,第237列:错误:预期的条令\ORM\Query\Lexer::T_CLOSE_括号,get','

倾销DQL:

CONCAT('table.field1', 'table.field2', 'table.field3')
正在使用$qb->getQuery()->getSQL()转储SQL:

[语法错误]第0行,第237列:错误:预期的条令\ORM\Query\Lexer::T_CLOSE_括号,get','


中引入了参数数量可变的
CONCAT
,因此您可能使用的是旧版本。我在我的项目中测试了一个类似的DQL,并按预期工作

您应该通过以下方式升级您的ORM DEP:

php composer.phar require doctrine/orm:~2.4
请注意,(目前)变量参数仅由
Expr\Func
构造函数支持,但在
Expr::concat
方法中不受支持;您仍然需要以下语法:

new Expr\Func('CONCAT', array('table.field1', 'table.field2', 'table.field3'));
更新我在
Expr::concat中创建了一个支持多个参数的