diff --git a/include/class.orm.php b/include/class.orm.php index c3b8153186487ac4bd9d6bd490d574a286d7e6b3..b8977f0a02c4d3a2fff659b68653892d9f9b0c21 100644 --- a/include/class.orm.php +++ b/include/class.orm.php @@ -1028,8 +1028,7 @@ class ModelInstanceManager extends ResultSet { // be the root model's fields. The annotated fields will be wrapped // using an AnnotatedModel instance. if ($annotations && $modelClass == $this->model) { - foreach ($annotations as $A) { - $name = $A->getAlias(); + foreach ($annotations as $name=>$A) { if (isset($fields[$name])) { $extras[$name] = $fields[$name]; unset($fields[$name]); @@ -1798,6 +1797,9 @@ class MySqlCompiler extends SqlCompiler { } // TODO: Throw exception if $field can be indentified as // invalid + if ($field instanceof SqlFunction) + $field = $field->toSql($this, $model); + $orders[] = $field.' '.$dir; } $sort = ' ORDER BY '.implode(', ', $orders); @@ -1883,8 +1885,8 @@ class MySqlCompiler extends SqlCompiler { $group_by = array(); // Add in annotations if ($queryset->annotations) { - foreach ($queryset->annotations as $A) { - $fields[] = $T = $A->toSql($this, $model, true); + foreach ($queryset->annotations as $alias=>$A) { + $fields[] = $T = $A->toSql($this, $model, $alias); // TODO: Add to last fieldset in fieldMap if ($fieldMap) $fieldMap[0][0][] = $A->getAlias();