【问题标题】:Dataobject in Silverstripe: Getting data from a Wordpress databaseSilverstripe 中的数据对象:从 Wordpress 数据库中获取数据
【发布时间】:2011-10-15 15:03:40
【问题描述】:

抱歉,如果这是一个简单的问题,我正在了解数据对象在 Silverstripe 中是如何工作的。

我的任务是从我们网站上的 wordpress 博客(目前在 /blog 上)获取帖子列表,并在页脚中显示最近的帖子,在另一种情况下,在他们的页面上显示某些编辑的帖子。

我已经看过 SqlQuery 的手册页,但每当我尝试其中的任何内容时,都会出现错误。我使用的代码基于示例,如下所示:

    $sqlQuery = new SQLQuery();
    $sqlQuery->select = array(
      'post_title',
      'post_content',
      'post_name'
    );
    $sqlQuery->from = array("
      wp_posts
    ");
    $sqlQuery->where =  array("
        post_status = 'publish'
    ");
    $sqlQuery->orderby = "
        post_date DESC
    ";
    // $sqlQuery->groupby = "";
    // $sqlQuery->having = "";
    // $sqlQuery->limit = "";
    // $sqlQuery->distinct = true;

    // get the raw SQL
    $rawSQL = $sqlQuery->sql();

    // execute and return a Query-object
    $result = $sqlQuery->execute();
    $myDataObjectSet = singleton('wp_posts')->buildDataObjectSet($result);
    var_dump($myDataObjectSet->First()); // DataObject

我得到的错误是:

[用户错误] singleton() 的错误类 - wp_posts

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    这将返回您的 WordPress 帖子的 DataObjectSet(在本例中为最新的 3 个)。假设 WordPress 与 SilverStripe 位于同一数据库中。

    function LatestPosts() {
        $sqlQuery = new SQLQuery();
        $sqlQuery->select("post_title", "post_content");
        $sqlQuery->from("wp_posts");
        $sqlQuery->where("post_status = 'publish'");
        $sqlQuery->orderby("post_date DESC");
        $sqlQuery->limit(3);
    
        if ($result = $sqlQuery->execute()) {
            $wp_posts = new DataObjectSet();
            foreach($result as $row) {
                $wp_posts->push(new ArrayData($row));
            }
            return $wp_posts;
        }
    
        return;
    }
    

    然后您可以在模板中迭代 DataObjectSet。

    <% if LatestPosts %>
        <% control LatestPosts %>
            <h3>$post_title</h3>
            <div>$post_content</div>
        <% end_control %>
    <% end_if %>
    

    【讨论】:

      猜你喜欢
      • 2016-01-13
      • 2014-09-24
      • 1970-01-01
      • 2018-02-03
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      相关资源
      最近更新 更多