Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Customising the CMS

Filter ArrayList Problem


Reply

4 Posts   368 Views

Avatar
Johnny9

25 October 2013 at 12:36am (Last edited: 25 October 2013 12:39am), Community Member, 21 Posts

Hi, I want to filter ArrayList, but I don't know if I filter it correctly or even is it possible. Here is my code:

public function getTopChildrenList() {

      $Childrens = $this->Children();      
         
      $limit = 4;
      
      $output = new ArrayList();

      foreach($Childrens as $C2) {
         $C2 = $C2->Children();   
       foreach($C2 as $C3) {               
            $C3 = $C3->Children()->filter('Created:GreaterThan', '2011-11-11')->limit($limit);
            foreach($C3 as $C4) {
               $output->push($C4);
             }               
         }
      }

      $list = $output;

      return $list;
   
}

I want to filter 7 days old items, but don't know how.. I if somebody know, please help.

Thanks :)

Avatar
Willr

30 October 2013 at 7:12pm Forum Moderator, 5511 Posts

filter is the correct method to use and the filter looks good. You could debug the SQL for the DataList (to check the WHERE) by looking at $list->sql()

Avatar
simon_w

30 October 2013 at 9:31pm Forum Moderator, 474 Posts

To be able to use the SearchFilters, you need a DataList. You can achieve the same effect as Children() by using something like that:

$C3 = $C3->stageChildren(false)->filter('Created:GreaterThan', '2011-11-11')->filterByCallback(function($item) {   
            return $item->canView();
         })->limit($limit);

Avatar
Johnny9

13 November 2013 at 9:09am Community Member, 21 Posts

Thank you both for answers :) Hope I will get it working:)