Как получить имя роли в зависимости от имени пользователя? - PullRequest
1 голос
/ 03 июля 2019

У меня есть таблица с именем role_users, в которой есть 3 столбца: id, user_id и role_id и таблица Users со всеми пользователями. Мне нужно получить роль id для каждого пользователя на моем сайте, потому чтоЯ хочу использовать значок для individuals (идентификатор 1) и другой значок для organizations (идентификатор 100).Моя таблица ролей здесь: https://imgur.com/a/DpthH7g.

Controller.php

$myRole = Role::join(
                    'users', 
                    function($join) {
                        $join->on('roles.id', '=', 'users.id');
                    }
                )
                ->groupBy('users.id')
                ->selectRaw(
                    implode(',', [
                        'users.id AS id', 
                    ])
                )
                ->get();
 return view('noticeboard.noticeboard',$data)
             ->with(compact('myRole'));

dd ($ myRole)

[{"id":1}];

Просмотр

@if($myRole->id == 1)
<a   href="{{ url('') }}/{{ $contact->username }}">{{ $contact->username  }}</a></h3>
<i class="icon-user"></i>
@else
<i class="icon-trophy"></i>
@endif

1 Ответ

1 голос
/ 03 июля 2019

Вы должны попробовать красноречивые отношения для этого.

В вашей пользовательской модели определите отношение hasOne с ролью

   public function role()
    {
        return $this->hasOne('App\Role','user_id');
    }

затем в контроллере используйте Eager Loading

$users = User::with('role')->get();
return view('noticeboard.noticeboard',compact('users'));

и затем использовать цикл foreach, чтобы получить всех пользователей с ролями

    @foreach($users as $user)
    @if($user->role->id == 1)
    <a   href="{{ url('').'/'.$user->username }}">{{ $user->username  }}</a></h3>
    <i class="icon-user"></i>
    @else
    <i class="icon-trophy"></i>
    @endif
    @endforeach

Если вы действительно не хотите использовать отношения. Затем используйте объединение в таблице «пользователи».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...