0

我需要为 MODx 页面制作过滤条目的排序列表。我在 db 中有几个条目,其中包含 'table1' 和列 'id'、'name'、'someparam1' 等。我可以在页面上打印整个列表

$companies = $modx->getCollection('Company'); 
foreach($companies as $company) {
    $fields = $company->toArray();
    $output .= $modx->getChunk('showEntryTpl', $fields);
}
return $output;

但我仍然无法使用推荐#1推荐#2打印相同的列表:来自 MODx 文档的示例:

$c = $xpdo->newQuery('Box');
$c->innerJoin('BoxOwner','Owner'); // arguments are: className, alias
$c->where(array(
   'width' => 5,
   'Owner.user' => 2,
));
$c->sortby('name','ASC');
$c->limit(5);
$boxes = $xpdo->getCollection('Box',$c);

以这种方式使用它

$sortingcriteria = 'id';

$s = $modx->newQuery('modResource');
$s->sortby($sortingcriteria,'ASC');
$out = $modx->getCollection('Company',$s);

return $out;

不起作用。如何按所选列对列表进行排序然后过滤?

4

2 回答 2

1
$sortingcriteria = 'id';

$s = $modx->newQuery('Company'); // your mistake here. Need to use 'Company' instead 'modResource'

然后您可以对条目进行排序和过滤

$s->sortby($sortingcriteria,'ASC');
$s->where(array(
   'column_name1' => 5,
   'column_name2' => 2,
));
$out = $modx->getCollection('Company',$s);

$output = '';
foreach ($out as $item) {
    $output .= $item->get('column_name') . '<br/>';
}

return $output;
于 2012-12-06T18:43:43.517 回答
1

感谢 Vasis 和 Sean Kimball 的建议!此代码从 db 中提取几条记录,这些记录按 ASC/DESC 顺序排序并按某个值过滤:

$sortingcriteria = 'id';
$filter1 = 'free';
$s = $modx->newQuery('Company');
$s->sortby($sortingcriteria,'ASC');
$s->where(array(
   'pay_type' => $filter1,
));
$out = $modx->getCollection('Company',$s);
$output = '';
foreach ($out as $item) {
    $fields = $item->toArray();
    $output .= $modx->getChunk('showAllCompaniesTpl', $fields);
}

return $output;
于 2012-12-07T13:06:58.187 回答