2015-06-08 4 views
0

У меня есть эта функция:Как сортировать и фильтровать детей в SilverStripe

public function LatestArticles() { 
    return $this->Children() 
     ->filter('PublicationDate:LessThanOrEqual', SS_Datetime::now()) 
     ->sort('PublicationDate','desc'); 
} 

Это ничего не выводящий на всех. Если я включаю его на это:

public function LatestArticles() { 
    return ArticlePage::get() 
     ->filter('PublicationDate:LessThanOrEqual', SS_Datetime::now()) 
     ->sort('PublicationDate','desc'); 
} 

Он выводит свои ArticlePages, но это (очевидно) включает в себя все ArticlePages сайт широкий, а не только детей ArticlePages.

Если я изменить код для этого:

public function LatestArticles() { 
    return $this->Children() 
     ->sort('PublicationDate','desc'); 
} 

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

Мне кажется, что я не могу правильно использовать функцию фильтра. Где я иду не так?

ответ

2

Я пересек этот вопрос на другом сайте и получил ответ, который сработал. Ниже приведено изменение кода, который был необходим.

public function LatestArticles() { 
    return ArticlePage::get() 
     ->filter(array(
      'ParentID' => $this->ID, 
      'PublicationDate:LessThanOrEqual' => SS_Datetime::now() 
     )) 
     ->sort('PublicationDate','desc'); 
}