0

MODxページのフィルタリングされたエントリのソートされたリストを作成する必要があります。「table1」と「id」、「name」、「someparam1」などの列を持つdbにいくつかのエントリがあります。リスト全体をページに印刷できます。

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

しかし、私はまだrecommendation#1またはrecommendation#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

提案してくれた Vasis と Sean Kimball に感謝します! このコードは、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 に答える
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 に答える