Silverstripe:按作者筛选博客文章

时间:2016-08-25 02:37:28

标签: php silverstripe

我现在正在谷歌搜索大约2个小时,无法找到这个问题的答案。我试图通过Author / MemberID过滤博客帖子(使用silverstripe-blog模块)。到目前为止,我已经:

public function MyRecentPosts() {

        $posts = BlogPost::get()
            ->sort('PublishDate','desc')
            ->limit(2);

        return $posts;
    }

显然,这只会返回最新的博文。我不确定我是否理解如何将Blog Post表与BlogPost_Authors表相关联...

非常感谢任何建议。

1 个答案:

答案 0 :(得分:7)

BlogMemberExtension类适用于Member类,它为您提供了一种通过“很多很多”协会访问会员帖子的简便方法。

我在这里假设这个函数在成员的扩展名中,并且你将传递成员ID,因为它已经不存在于你的代码中。这个假设可能不正确,因为您的方法被命名为“我的 RecentPosts”,但无论如何 - 这是一个例子:

public function MyRecentPosts($memberId)
{
    $member = Member::get()->byId($memberId);

    $posts = $member->BlogPosts()
        ->sort('PublishDate', 'desc')
        ->limit(2);

    return $posts;
}

您也可以通过“许多”协会从BlogPost模型中执行此操作:

$posts = BlogPost::get()
    ->filter(array('Authors.ID' => $memberId))
    ->sort('PublishDate', 'desc')
    ->limit(2);