private function fetchCids() { if ($this->cids === null) { $groupsrights = array(); foreach (self::$instances as $instance) { foreach ($instance->gids as $gid) { $groupsrights[] = array('group' => $gid, 'rights' => $instance->rights); } } $castes = Caste::batchFrom($groupsrights); foreach (self::$instances as $instance) { $gids = $instance->gids; $rights = $instance->rights; $filtered = $castes->filter(function ($c) use($gids, $rights) { return in_array($c->group()->id(), $gids) && $c->rights()->isMe($rights); }); $instance->cids = $filtered->ids(); } } return $this->cids; }