Laravel: Как получить доступ к уникальному идентификатору вошедшего в систему пользователя и использовать его в запросе к базе данных? - PullRequest
1 голос
/ 26 марта 2019

Я создаю веб-сайт для администрации колледжа, на котором профессора входят в систему и выставляют оценки студентам, которых они преподают.

Есть таблица под названием "IA_Marks" в моей базе данных:

|Student_ID|Subject_Code|Name|Marks1|Marks2|Marks3|Semester|Division|

В моей базе данных также есть таблица с именем "Classroom_Mapper" , которая помогает отобразить профессора в классе с предметом:

|Prof_ID|Subject_Code|Semester|Division|

Моя проблема:

Я хочу получить поля Subject_Code, Semester, Division из Classroom_Mapper таблица, чтобы я мог использовать ее для извлечения Student_ID, Name, Marks1,2,3 из таблицы IA_Marks .

Для получения3 поля из таблицы Classroom_Mapper Мне понадобится поле Prof_ID, которое уникально для каждого профессора.

Каждый профессор входит в систему, используя свой Prof_ID.

  1. Как мне получить Prof_ID?
  2. Когда я получаю Prof_ID, как мне получить другого3 поля из Classroom_Mapper в мой контроллер?

Мне нужно получить эти поля, чтобы я мог сузить результаты запроса select на IA_Marks , которая в настоящее время отображает всю таблицу.

Это мой текущий код: он показывает полную таблицу, а не просто показывает необходимые записи:

UserDefinedController.php

public function show(){        
        $data = DB::table('iamarks')->get();
        return view('ia',compact('data'));
 }

ia.blade.php

<table>
        <tr>
                <th>ID</th>
                <th>SUBCODE</th>
                <th>NAME</th>
                <th>IA1</th>
                <th>IA2</th>
                <th>IA3</th>
                <th>SEMESTER</th>
                <th>DIVISION</th>
        </tr>
        @foreach($data as $row)
            <tr>
                <td>{{ $row->ID}}</td>
                <td>{{ $row->subcode }}</td>
                <td>{{ $row->name }}</td>
                <td>{{ $row->IA1 }}</td>
                <td>{{ $row->IA2 }}</td>
                <td>{{ $row->IA3 }}</td>
                <td>{{ $row->semester }}</td>
                <td>{{ $row->division }}</td>
            </tr>
        @endforeach

    </table>

Моя идея решения этой проблемы: (Синтаксис определенно отключен! Но я надеюсь, вы поймете, куда я направляюсь с этим.)

//Think of this as a pseudo-code
public function show(){
    $Prof_ID = LoggedInUser->Prof_ID;
    $Semester = DB::table('classroom_mapper')->pluck('Semester')->where('Prof_ID','=',$Prof_ID);
    $Division = DB::table('classroom_mapper')->pluck('Division')->where('Prof_ID','=',$Prof_ID);
    $data = DB::table('iamarks')->get()->where('Semester = $Semester' AND 'Division = $Division');
    return view('ia',compact('data'));
}

Я просто не могу понять, как получить эти значения!

Ответы [ 2 ]

3 голосов
/ 26 марта 2019

Как получить Prof_ID?

Используя вспомогательный auth или класс Auth, который вы можете запустить:

Auth::user()->Prof_ID

для получения идентификатора пользователя.Если вы используете класс Auth, убедитесь, что вы use it:

use Auth;

Когда я получаю Prof_ID, как мне выбрать другие 3 поля изClassroom_Mapper в мой контроллер?

Вы установили бы отношения между вашей моделью Профессора, как это описано в официальной документации .В качестве альтернативы вы можете использовать стандарт болота join с вашей моделью, чтобы получить необходимые данные.

0 голосов
/ 26 марта 2019

Мне удалось решить проблему. Вот что я сделал:

public function showTable(){
    $sem = DB::table('classroom_mappers')->where('Prof_ID', auth()->user()->PID)->pluck('semester');
    $division = DB::table('classroom_mappers')->where('Prof_ID', auth()->user()->PID)->pluck('division');
    $data = DB::table('iamarks')->where([['semester','=',$sem],['division','=',$division]])->get();
    return view('ia',compact('data'));
}

Это работает, но у меня есть еще одна проблема: Скажем, профессор преподает два предмета в двух семестрах. Затем предложение where вернет несколько результатов из таблицы сопоставления. Я пытаюсь решить эту проблему, показывая студентам только целевой семестр и целевое разделение, но пока не совсем уверен, как мне это сделать.

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