/** * Fetch a row of objects from the database * * @param null|CriteriaElement $criteria criteria object * @param bool $id_as_key if true, use avatar_id as array key * * @return array */ public function getObjectsWithCount(CriteriaElement $criteria = null, $id_as_key = false) { $ret = array(); if ($criteria === null) { $criteria = new Criteria(''); } $criteria->setGroupby('a.avatar_id'); $criteria->setSort('avatar_weight, avatar_id'); $qb = $this->db2->createXoopsQueryBuilder(); $qb->select('a.*', 'COUNT(u.user_id) AS count')->fromPrefix('avatars_avatar', 'a')->leftJoinPrefix('l', 'avatars_user_link', 'u', 'u.avatar_id=a.avatar_id'); $criteria->renderQb($qb); $result = $qb->execute(); if (!$result) { return $ret; } while ($myrow = $result->fetch(\PDO::FETCH_ASSOC)) { $avatar = new AvatarsAvatar(); $avatar->assignVars($myrow); $avatar->setUserCount($myrow['count']); if (!$id_as_key) { $ret[] = $avatar; } else { $ret[$myrow['avatar_id']] = $avatar; } unset($avatar); } return $ret; }