【发布时间】:2015-09-10 19:40:37
【问题描述】:
这两种方法都试过了,注释的代码是原始的,两次结果都是一样的。
/*
$sql = "select * from modx_site_content where context_key = '$context' order by ABS(id) ASC;";
$results = $modx->query($sql);
foreach($results as $result){
$output[] = '('.$result['id'].') '.$result['pagetitle'].'=='.$result['id'];
}
*/
$criteria = $modx->newQuery('modResource');
$criteria->where(array(
'context_key' => $context,
));
$criteria->sortby('id','ASC');
$results = $modx->getCollection('modResource',$criteria);
foreach($results as $result){
$result = $result->toArray();
$output[] = '('.$result['id'].') '.$result['pagetitle'].'=='.$result['id'];
}
结果将是:100,101,102,103,50,51,52,53 等。它将它们排序为字符串而不是整数。如果您注意到即使在我的注释代码中我尝试将其明确排序为整数,我检查了数据库该字段是主键[和整数]。
这里发生了什么以及如何正确排序?
[即 50,51,52,53,100,101,012 等...]
【问题讨论】:
-
很奇怪。您的代码应该返回按 ID 数字排序的集合。如果你 var_dump $output,是不是排序错误?在数据库中,id 为:int(10) unsigned NOT NULL AUTO_INCREMENT
-
是的 - 如果我转储 $output 数组,它会像数据库一样正确排序
标签: modx modx-revolution