Symfony 2 / Doctrine 用户定义的 DQL 函数参数有字符串长度限制吗?
2022-08-30 19:21:38
我为 Doctrine DQL 创建了我的自定义 DQL 函数:
class Translate extends FunctionNode {
public $field;
public function getSql(SqlWalker $sqlWalker) {
$query = "TRANSLATE(" . $this->field->dispatch($sqlWalker) . ", 'àâäãáåÀÁÂÃÄÅçÇéèêëÉÈÊËîïìíÌÍÎÏñÑôöðòóÒÓÔÕÖùúûüÙÚÛÜýÿÝ', 'AAAAAAAAAAAACCEEEEEEEEIIIIIIIINNOOOOOOOOOOUUUUUUUUYYY')";
return $query;
}
public function parse(Parser $parser) {
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->field = $parser->StringPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
}
使用它时似乎效果很好。
但是,如果字符串参数包含的字符超过 307 个字符,则它不起作用。没有错误,但脚本即将结束。
$query = $this->createQueryBuilder('...');
$query->addSelect("TRANSLATE('less than 307 chars')"); // working
$query->addSelect("TRANSLATE('more than 307 chars')"); // NOT working
如何使用超过 307 个字符?