首页 > 解决方案 > Laravel:如何访问登录用户的唯一 ID 并在数据库查询中使用它?

问题描述

我正在制作一个大学管理网站,教授登录并为他们正在教的学生分配分数。

我的数据库中有一个名为“IA_Marks”的表:

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

在我的数据库中还有一个名为“Classroom_Mapper”的表,它可以帮助将教授映射到教室,其中包含一个主题:

|Prof_ID|Subject_Code|Semester|Division|

我的问题:

我希望从Classroom_MapperSubject_Code表中获取, Semester,Division字段以便我可以使用它从IA_Marks表中获取, , 。Student_IDNameMarks1,2,3

要从Classroom_Mapper表中获取 3 个字段,我需要该Prof_ID字段,该字段对每个教授都是唯一的。

每个教授都使用他的Prof_ID.

  1. 如何获取 Prof_ID?
  2. 当我获取 Prof_ID 时,如何将Classroom_Mapper中的其他 3 个字段提取到我的控制器中?

我需要获取这些字段,以便我可以缩小IA_Marksselect上的查询结果,它当前显示整个表。

这是我当前的代码:它显示了完整的表格,而不仅仅是显示所需的记录:

用户定义控制器.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'));
}

我只是不知道如何获取这些值!

标签: phpmysqllaravellaravel-5.8

解决方案


如何获取 Prof_ID?

使用auth帮助程序或Auth您可以运行的类:

Auth::user()->Prof_ID

获取用户的ID。如果您正在使用该Auth课程,请确保您use

use Auth;

当我获取 Prof_ID 时,如何将 Classroom_Mapper 中的其他 3 个字段提取到我的控制器中?

您将按照官方文档中所教的方法在您的教授模型之间建立关系。或者,您可以对模型进行沼泽标准join以提取您需要的数据。


推荐阅读