public function loadAll($idList = [], $withAccess = true)
    {
        $ret = [];

        if (empty($idList)) {
            return $ret;
        }

        $q = $this
            ->database
            ->select('ucms_group', 'g')
        ;

        if ($withAccess) {
            $q->addTag('ucms_group_access');
        }

        $groups = $q
            ->fields('g')
            ->condition('g.id', $idList)
            ->execute()
            ->fetchAll(\PDO::FETCH_CLASS, Group::class)
        ;

        // Ensure order is the same
        // FIXME: find a better way
        $sort = [];
        foreach ($groups as $group) {
            $sort[$group->getId()] = $group;
        }
        foreach ($idList as $id) {
            if (isset($sort[$id])) {
                $ret[$id] = $sort[$id];
            }
        }

        return $ret;
    }