Burada aynı problem vardı. Benim proje çok eski olduğunu ve hızlı bir şekilde bunu düzeltmek için çalıştı. Yani sadece bu yüzden "zaman davayı" kullanabilirsiniz biraz Doktrini için kodunu değiştirmek. Bu Doktrin 1.1.3 için benim kodudur.
658-674 Doktrini / Query.php, değişim hatları:
if (count($terms) > 1 || $pos !== false) {
if($terms[0]=='case')
{
$terms=explode(" as ", $reference);
$expression = array_shift($terms);
$alias = array_pop($terms);
if ( ! $alias) {
$alias = substr($expression, 0, $pos);
}
$componentAlias = $this->getExpressionOwner($expression);
$tableAlias = $this->getTableAlias($componentAlias);
$expression=str_replace($componentAlias, $tableAlias, $expression);
$index=0;
$sqlAlias = $tableAlias . '__' . $alias;
}
else
{
$expression = array_shift($terms);
$alias = array_pop($terms);
if ( ! $alias) {
$alias = substr($expression, 0, $pos);
}
$componentAlias = $this->getExpressionOwner($expression);
$expression = $this->parseClause($expression);
$tableAlias = $this->getTableAlias($componentAlias);
$index = count($this->_aggregateAliasMap);
$sqlAlias = $this->_conn->quoteIdentifier($tableAlias . '__' . $index);
}
$this->_sqlParts['select'][] = $expression . ' AS ' . $sqlAlias;
Bu büyük bir değişiklik değil, ama o bana yardımcı oldu ...