2016-08-25 21 views
5

私は約2時間前にグーグルで遊んでいましたが、この質問に対する回答は見つかりませんでした。私はAuthor/MemberIDのブログ投稿(silverstripe-blogモジュールを使用)をフィルタリングしようとしています。これまでのところ、私は持っています:Silverstripe:著者によるブログ記事の投稿

public function MyRecentPosts() { 

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

     return $posts; 
    } 

明らかに、最新のブログ投稿だけを返します。 Blog PostテーブルとBlogPost_Authorsテーブルを関連付ける方法を理解できていません...

アドバイスをいただければ幸いです。

答えて

7

よく、BlogMemberExtensionMemberクラスに適用されます。これにより、「たくさんの多数の所属」関連を介してメンバーの投稿に簡単にアクセスできます。

私はこの機能がではないと仮定しています。はメンバーの内線番号であり、あなたのコードに既に存在しないのでメンバーIDを渡します。

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

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

    return $posts; 
} 

あなたはまた、その「多くの多くの」会合を介してBlogPostモデルからそれを行うことができます:

ここでは例です - あなたの方法は、「マイ RecentPosts 」という名前の、とにかくされているので、この仮定はよく間違っている可能性があります
$posts = BlogPost::get() 
    ->filter(array('Authors.ID' => $memberId)) 
    ->sort('PublishDate', 'desc') 
    ->limit(2); 
+1

素晴らしいです。ご協力いただきありがとうございます。 – Dallby

関連する問題