Как показать топ 5 пользователей в phpfox
Я пытаюсь показать топ-пользователей по баллам активности, я могу получить только топ-пользователя с помощью этого кода
<?php
$dbase = Phpfox::getLib('database');
$aRow = $dbase->select(Phpfox::getUserField() . ', ur.activity_points AS score')
->from(Phpfox::getT('user'), 'u')
->join(Phpfox::getT('user_activity'),'ur','ur.user_id = u.user_id')
->where('ur.activity_points > 0')
->limit(10)
->order('ur.activity_points DESC')
->execute('getRow');
?>
<?php if (count ( $aRow )){ ?>
<div class="block" id="js_sortable_friend_mini"><div class="title ">Top Active Users</div>
<div class="clear" style="height: 5px;"></div>
<ul id="topuserpoints">
<div class="name_userpoints">
<?php echo '<a href="' . Phpfox::getLib('phpfox.url')->makeUrl('profile', $aRow['user_name']) . '">' . $aRow['full_name'] . '</a>'; ?>
</div>
<div class="score_userpoints">
<?php echo $aRow['score']; ?>
</div></ul>
</div>
<div class="clear"></div>
<?php } unset($aRow); ?>
Этот код дают только топовые пользователи. но я хочу топ 5. пожалуйста помогите
2 ответа
Попробуйте выполнить с "getRows" и установите лимит в 5, если вы хотите 5 из лучших:
......
->limit(5)
->order('ur.activity_points DESC')
->execute('getRows');
.....
Можете ли вы попробовать с getRows или getSlaveRows вместо getRow в вашем запросе.
->execute('getRow');
getRow вернет только одну запись, getRows вернет более одной.
Ниже приведен код для отображения параметра ранга на основе точек активности.
$dbase = Phpfox::getLib('database');
$aRow = $dbase->select(Phpfox::getUserField() . ', ur.activity_points , FIND_IN_SET( activity_points, ( SELECT GROUP_CONCAT( DISTINCT activity_points ORDER BY activity_points DESC ) FROM '.Phpfox::getT('user_activity').')) AS rank ')
->from(Phpfox::getT('user'), 'u')
->join(Phpfox::getT('user_activity'),'ur','ur.user_id = u.user_id')
->where('ur.activity_points > 0')
->limit(10)
->order('rank')
->execute('getRows');