tworzę niestandardową funkcję DQL do nauki DQL:Symfony 2/Doctrine zdefiniowane przez użytkownika parametry funkcji DQL mają ograniczenie długości łańcucha?
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);
}
}
wydaje się działać dobrze podczas korzystania z niego.
Ale jeśli parametr ciągu zawiera więcej niż 307 znaków, to nie działa. Nie ma błędu, ale skrypt się kończy.
$query = $this->createQueryBuilder('...');
$query->addSelect("TRANSLATE('less than 307 chars')"); // working
$query->addSelect("TRANSLATE('more than 307 chars')"); // NOT working
Jak mogę użyć więcej niż 307 znaków?
próbowałeś uruchomić tylko SQL z więcej niż 307 znaków? Może to problem w maksymalnym rozmiarze zapytania. –
Tak, i nie ma ograniczeń. – Seb33300
A jeśli zmodyfikować moje funkcję DQL (Przetłumacz klasę), aby bezpośrednio umieścić mój łańcuch, to działa: $ query = „translate («surowy ciąg z więcej niż 307 znaków pracy»,«àâäãáåÀÁÂÃÄÅçÇéèêëÉÈÊËîïìíÌÍÎÏñÑôöðòóÒÓÔÕÖùúûüÙÚÛÜýÿÝ»,«AAAAAAAAAAAACCEEEEEEEEIIIIIIIINNOOOOOOOOOOUUUUUUUUYYY»)”; – Seb33300