ho creato la mia funzione DQL personalizzata per Dottrina DQL:Symfony 2/Doctrine Il parametro delle funzioni DQL definito dall'utente ha un limite di lunghezza della stringa?
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);
}
}
Sembra funzionare bene quando lo si utilizza.
Ma se il parametro stringa contiene più di 307 caratteri, non funziona. Non c'è nessun errore ma lo script sta finendo.
$query = $this->createQueryBuilder('...');
$query->addSelect("TRANSLATE('less than 307 chars')"); // working
$query->addSelect("TRANSLATE('more than 307 chars')"); // NOT working
Come posso utilizzare più di 307 caratteri?
Hai provato a correre solo SQL con più di 307 caratteri? Forse è un problema nella dimensione massima della query. –
Sì, e non ci sono limiti. – Seb33300
E se io modifico la mia funzione DQL (Traduci classe) di mettere direttamente la mia stringa, sta funzionando: $ query = "translate ('stringa crudo con più di 307 caratteri di lavoro', 'àâäãáåÀÁÂÃÄÅçÇéèêëÉÈÊËîïìíÌÍÎÏñÑôöðòóÒÓÔÕÖùúûüÙÚÛÜýÿÝ', 'AAAAAAAAAAAACCEEEEEEEEIIIIIIIINNOOOOOOOOOOUUUUUUUUYYY')"; – Seb33300