2016-08-25 2 views
5

Я уже около 2 часов ищу работу в Интернете и не могу найти ответ на этот вопрос. Я пытаюсь фильтровать сообщения в блоге (используя модуль silverstripe-blog) автор/MemberID. До сих пор у меня есть:Silverstripe: Фильтровать сообщения в блоге от автора

public function MyRecentPosts() { 

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

     return $posts; 
    } 

Очевидно, что только возвращает самые последние сообщения в блоге. Я не уверен, что понимаю, как связать стол в блоге с таблицей BlogPost_Authors ...

Любые советы были бы весьма благодарны.

ответ

7

Ну, BlogMemberExtension применяется к классу Member, который предоставляет вам простой способ доступа к сообщениям участника через ассоциацию «принадлежит многим многим».

Я предполагаю, что эта функция будет не быть в расширении члена, и что вы передадите идентификатор участника, так как его нет в вашем коде. Это предположение вполне может быть неправильным, так как ваш метод называется «My 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); 
+1

Фантастический. Спасибо за вашу помощь. – Dallby