diff options
Diffstat (limited to 'framework')
-rw-r--r-- | framework/Data/Common/TDbCommandBuilder.php | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/framework/Data/Common/TDbCommandBuilder.php b/framework/Data/Common/TDbCommandBuilder.php index fee48082..c4bfeb98 100644 --- a/framework/Data/Common/TDbCommandBuilder.php +++ b/framework/Data/Common/TDbCommandBuilder.php @@ -1,10 +1,10 @@ -<?php +<?php
/**
* TDbCommandBuilder class file.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
- * @copyright Copyright © 2005-2008 PradoSoft + * @copyright Copyright © 2005-2008 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Id$
* @package System.Data.Common
@@ -105,11 +105,17 @@ class TDbCommandBuilder extends TComponent public function applyOrdering($sql, $ordering)
{
$orders=array();
- foreach($ordering as $name=>$direction)
+ foreach($ordering as $name => $direction)
{
$direction = strtolower($direction) == 'desc' ? 'DESC' : 'ASC';
- $column = $this->getTableInfo()->getColumn($name)->getColumnName();
- $orders[] = $column.' '.$direction;
+ if(strpos($name, '(') && strpos($name, ')')) {
+ // key is a function (bad practice, but we need to handle it)
+ $key = $name;
+ } else {
+ // key is a column
+ $key = $this->getTableInfo()->getColumn($name)->getColumnName();
+ }
+ $orders[] = $key.' '.$direction;
}
if(count($orders) > 0)
$sql .= ' ORDER BY '.implode(', ', $orders);
@@ -361,5 +367,5 @@ class TDbCommandBuilder extends TComponent return false;
}
}
- -?> +
+?>
|