LARAVEL: Как отобразить все тот же тип пользователя, который в настоящее время вошел в систему на <table>? - PullRequest
0 голосов
/ 15 октября 2019

Я новичок в laravel и сейчас пытаюсь получить всех тех же типов пользователей, что и вошедший в систему, для отображения на столе. Например, если учитель вошел в систему, то в таблице должны быть указаны все другие пользователи типа учителей, только учителя, нет учеников и т. Д. В настоящее время я использую код таблицы make auth.

код таблицы

<table class="table table-striped table-bordered">
    <thead class="bg-danger">
      <tr>
        <th scope="col">First</th>
        <th scope="col">Email</th>
        <th scope="col">Type</th>
        <th scope="col">Action</th>
      </tr>
    </thead>
    <tbody>
      @foreach($users as $user)
        <tr>
          <td>{{ $user->name }}</td>
          <td>{{ $user->email }}</td>
          <td>{{ $user->user_type }}</td>
          <td style="width: 13%">
          <button type="button" class="btn btn-primary">{{ __('Edit') }}</button>
          <button type="button" class="btn btn-primary">{{ __('Delete') }}</button>
          </td>
        </tr>
      @endforeach
    </tbody>
  </table>
  </div>

Код контроллера


    public function index()
    {
        $users = User::all();

        return view('users.index')->with([
            'contentheader' => 'Users',
            'users' => $users,
        ]);
    }

Код миграции

 public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('username', 20)->unique();
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->enum('user_type',['teacher','student']);
            $table->rememberToken();
            $table->timestamps();
        });
    }

Ответы [ 4 ]

2 голосов
/ 15 октября 2019

Сначала добавьте промежуточное ПО Auth в свой маршрут, как

Route::get('your route and related method')->middleware('auth');

И выполните запрос в вашем контроллере. Метод как,

use Auth;//don't forgot to add this
 public function index()
    {
       if(Auth::check())
       {
        $users = User::where('user_type',Auth::user()->user_type)->where('id','!=',Auth::user()->id)->get();
        return view('users.index')->with([         
            'users' => $users,
        ]);
      }

    }
1 голос
/ 15 октября 2019

Вам нужно получить только определенного типа пользователя вместо всех пользователей, подобных этому

 $users = User::where('user_type','=', auth()->user()->user_type)->get();

Этот auth()->user()->user_type даст вам тип пользователя, который в данный момент вошел в систему, используя то, что вы можете отфильтроватьпользователи.

1 голос
/ 15 октября 2019

В вашем контроллере измените $users = User::all(); со следующим,

$users = User::where('user_type', Auth::user()->user_type)->get();
1 голос
/ 15 октября 2019

Поскольку у вас есть Auth, вы можете проверить тип зарегистрированного пользователя из него.

public function index()
    {
        $users = User::where('user_type',Auth::user()->user_type)->get();

        return view('users.index')->with([
            'contentheader' => 'Users',
            'users' => $users,
        ]);
    }

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

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