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   433 Views

Avatar
Johnny9

Community Member, 22 Posts

25 October 2013 at 12:36am

Edited: 25/10/2013 12:39am

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

Forum Moderator, 5513 Posts

30 October 2013 at 7:12pm

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

Forum Moderator, 474 Posts

30 October 2013 at 9:31pm

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

Community Member, 22 Posts

13 November 2013 at 9:09am

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