Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Laravel. Система рангов

Серый С-Гаража Ученик (98), на голосовании 1 год назад
Как реализовать?
Например: если у человека 100 очков то ему дается определенное звание
и т.д - 200 очков - другое звание

Срочно надо, помогите пожалуйста
Голосование за лучший ответ
allcash Оракул (72226) 1 год назад
с помощью алгебры и логики
Mikech Мастер (1575) 1 год назад
сделать поле хранение очков points

сделать акцессор переводящий очки в звания
самое простое так
public function getRankAttribute($value)
{
if($this->points >= 100 && $this->points < 200){
return 'Ученик';
} else if() ....
}

посложнее связь с моделью Rank в которой звания хранить
EVK IT Сервис К Мыслитель (5226) 1 год назад
Это лучше сделать при событии когда очки пользователя меняются. И сразу записывать итог в базу.
Таблица рангов(ranks): rank_name, min_score_value
Таблица пользователя (users): current_score_value, rank_id (привожу не все поля, а необходимые)

В итоге по событию:
1) Получаем из ДБ ранг(и): SELECT id FROM ranks WHERE min_score_value <= current_score_value ORDER BY id
2) Update users SET rang_id =ranks .id

Потом при вызове пользователя Join Left рангов и получим сразу звание
Похожие вопросы