MODX -工具访问适当的数据从数据库


I have a bit of code, it works to get recent posts from Discuss forums in MODX.
<?php
$discuss = $modx->getService('discuss','Discuss',$modx->getOption('discuss.core_path',null,$modx->getOption('core_path').'components/discuss/').'model/discuss/');
if (!($discuss instanceof Discuss)) return true;
$c = $modx->newQuery('disPost');
$c->limit(10);
$c->sortby('createdon', 'DESC');
$posts = $modx->getCollection('disPost', $c);
foreach ($posts as $post) {
    $temp = $post->toArray();
    $temp['url'] = $post->getUrl();
    // call chunks or what you want
    $out[] = $modx->getChunk('rowTpl', $temp);
}
return implode("n", $out);

它是有效的,尽管它不完美。例如,我想过滤掉私人消息,但在帖子级别这不起作用,在帖子级别没有私有标志。

所以我需要做的是抓取线程,排序私有或没有,然后获取该数据并通过createdon和排序DESC找到帖子,所以基本上是在这个数据库调用之前的另一个例程。

有人有什么想法吗?任何帮助将不胜感激!

看一下数据库模型,如果在另一个表中有一个字段将帖子标记为私有,您应该能够通过使用getCollectionGraph和代码中的另一个小参数来过滤它们。

我不熟悉数据库模式,所以下面的代码将不工作[它甚至不相关],但给你一个想法,你应该寻找和如何连接相关的表:

if($queryFilters['status_id'] == '' ){$queryFilters['status_id'] = 2;} 
$mygroups = $this->getGroupMemberships(); // an array of group ids
$criteria = $this->modx->newQuery('FundRequest');
$criteria->leftJoin('Program','Program');
$criteria->where($queryFilters); // an array('id' => 2, 'uid' => 3) etc..
$criteria->andCondition(array('Program.location_id:IN' => $mygroups));
$criteria->sortby('`FundRequest`.`request_date`','desc');
$fundRequests = $this->modx->getCollectionGraph('FundRequest', '{ "StatusFlag":{}, "PaymentMethod":{}, "Contract":{ "Client": {}, }, "Program": { "Location": {}, "ProgramName": {}, } }', $criteria);

相关内容

  • 没有找到相关文章

最新更新