@VoRoN1999

Как присоединить только 1 запись в запросе?

Всем привет. Я сильно упрощу БД, чтобы было проще разбираться.
Есть 3 таблицы
users
- id
- name
- points

admin
-id
-user_id

ranks
-id
-name
-score

ranks:

1 - Должность 1 - 0
2 - Должность 2 - 15
3 - Должность 3 - 25
Нужно составить такой запрос:

Если user_id (текущего пользователя) присутствует в admin, то у пользователя появляется столбец rank_name = Админ
Если мы не админ, то смотрим сколько у нас points. Если 14, то rank_name = Должность 1, если 15, то Должность 2 и т.д.

У меня сейчас проблема в том, что пользователи дублируются т.к. присоединяется несколько записей из таблицы ranks.
->join('ranks', function ($join) {
                $join->on('aPoints.points', '<=', 'ranks.score')
                    ->orderByDesc('ranks.score')
                    ->limit(1); (не работает)


Как решить данную проблему? Чтобы у 1 пользователя была только 1 запись из таблицы rnaks
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
Users::select(
    'users.*', 
    DB::raw("IF(exist (select * from admin where admin.user_id = users.id), 'admin', (select name from rank where score<=users.points order by score desc limit 1)) as rank"))
->get();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы