2014-03-25 46 views
-1

我试图弄清楚什么是错上xPDO SQL查询排序顺序,对象的排序顺序是错误

这个查询

$criteria = $this->modx->newQuery($table); 
$criteria->sortby($sortby,$sortdir); 
$options = $this->modx->getCollectionGraph($table,$criteria); 
$criteria->prepare(); 
echo '<pre>'.$criteria->toSQL().'</pre>'; 

结果在这个SQL〜这是正确的:

SELECT `Location`.`id` AS `Location_id`, `Location`.`created` AS `Location_created`, 
`Location`.`modified` AS `Location_modified`, `Location`.`location` AS 
`Location_location`, `Location`.`group` AS `Location_group`, `Location`.`comment` 
AS `Location_comment` 
FROM `flow_location` AS `Location` ORDER BY location asc 

但是,如果我尝试遍历查询:

foreach($options as $option) { 
    echo $option->get($value).'<br>'; 
} 

它会通过数据库中的订单ID显示记录!?

我该如何解决这个问题?

回答

1

您正在订购location asc,但location未在您的查询中定义。您将列location重新命名为Location_location,因此您应该订购Location_location asc

SELECT `Location`.`id` AS `Location_id`, `Location`.`created` AS `Location_created`, 
`Location`.`modified` AS `Location_modified`, `Location`.`location` AS 
`Location_location`, `Location`.`group` AS `Location_group`, `Location`.`comment` 
AS `Location_comment` 
FROM `flow_location` AS `Location` ORDER BY location asc 
+0

如果我在一个SQL浏览器中运行该查询它的工作和为了正确 - 我看到你说的话试图通过Location_location订购yeilds相同的结果[$基准 - > sortby($表.'_” 。$ sortby,$ sortdir);我不确定你可以对getCollectionGraph进行排序,因为如果我只是使用'getCollection' –

+0

Gotcha,代码就可以工作。不太了解modx,但是你可以在php中用usort()函数查询后排序对象。举一些例子来说吧 –