【问题标题】:MODX - tool to access proper data from DBMODX - 从数据库访问适当数据的工具
【发布时间】:2014-06-15 09:36:21
【问题描述】:
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,所以基本上是在这个 db 调用之前的另一个例程。

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

【问题讨论】:

    标签: php database call modx forums


    【解决方案1】:

    查看数据库模型,如果另一个表中有一个字段将帖子标记为私有,您应该能够使用 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);
    

    希望这能给你一些线索。

    【讨论】:

    • 谢谢。我确实有 db 架构,可以从您提供的代码中学习。线程级别肯定有私有字段。
    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多