【问题标题】:Silverstripe: Filter blog posts by AuthorSilverstripe:按作者过滤博客文章
【发布时间】:2017-01-01 07:54:08
【问题描述】:

我已经在谷歌上搜索了大约 2 个小时,但找不到这个问题的答案。我正在尝试按作者/会员 ID 过滤博客文章(使用 silverstripe-blog 模块)。到目前为止,我得到了:

public function MyRecentPosts() {

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

        return $posts;
    }

显然,它只返回最近的博客文章。我不确定我是否了解如何将 Blog Post 表与 BlogPost_Authors 表关联起来......

任何建议将不胜感激。

【问题讨论】:

    标签: php silverstripe


    【解决方案1】:

    BlogMemberExtension 应用于 Member 类,它为您提供了一种通过“属于许多”关联访问成员帖子的简单方法。

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

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

    【讨论】:

    • 太棒了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多