*/ class ForumPerms extends PermissionHandler { public const TABLE = 'forum_perms'; public function __construct(Forum $forum, User $user) { $this->additionalRequirements['where_in']['forum_id'] = iterator_to_array($this->getForumIds($forum->id)); parent::__construct($user); } public function getForumIds(int $id): Traversable { // yield the initial id yield $id; while ($id > 0) { $id = DB::table('forums') ->where('forum_id', $id) ->value('forum_category'); yield $id; } } }