Php MODX-从数据库访问正确数据的工具

Php MODX-从数据库访问正确数据的工具,php,database,call,modx,forums,Php,Database,Call,Modx,Forums,不管它有多不完美,它都能工作。例如,我想过滤掉私有消息,但在post级别这不起作用,在post级别没有私有标志 所以我需要做的是抓取线程,对private或no进行排序,然后通过createdon和sortdesc获取数据并查找帖子,所以基本上这一个中db调用之前的另一个例程 有人有什么想法吗?任何帮助都将不胜感激 看看数据库模型,如果在另一个表中有一个字段将帖子标记为private,那么您应该能够使用getCollectionGraph和代码中的另一个小参数来过滤掉它们 我不熟悉数据库模式,因

不管它有多不完美,它都能工作。例如,我想过滤掉私有消息,但在post级别这不起作用,在post级别没有私有标志

所以我需要做的是抓取线程,对private或no进行排序,然后通过createdon和sortdesc获取数据并查找帖子,所以基本上这一个中db调用之前的另一个例程


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

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

我不熟悉数据库模式,因此下面的代码不起作用[它甚至不相关],但让您了解应该查找什么以及如何连接相关表:

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);

希望这能给你一些线索。

谢谢。我有db模式,可以从您提供的代码中学习。线程级别肯定有私有字段。
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);