首页 > 解决方案 > 为什么我在尝试查找特定用户时从 laravel 的数据库中获取空值?

问题描述

我正在尝试使用学生 ID 在我的数据库中显示特定学生的信息。我似乎得到空值,但学生存在于数据库中。我真的不知道为什么会得到这个空值。

这就是我所做的

public function showResult(Request $request, $std_id)
    {   

      $user = Student::find($std_id);
      if (empty($user)) {
        return redirect('/user')
      }

        $academic = $request->input('academic_year');
        $std = $request -> input('studentID');

       $results = DB::table('students')
                  ->select('*')
                  ->join('results', 'students.std_id', 'results.student_results_id')
                  ->where('student_results_id', '=', $std)
                  ->where('academic_year', '=', $academic)
                  ->get();


                  return view('resultsdisplay',[
                  'results' => $results,
                  ]);
        }
}

这是我的路线:

Route::get('/student/resultshow/{std_id}', 'ResultsController@showResult');

我的studentprofile.blade.php

<li class="list-group-item">
            <form action="{{URL::to('/student/resultshow/{!! $studentprofilePage->std_id !!}')}}" method="GET" enctype="multipart/form-data">

             <input type="text" name="studentID" value="{!! $studentprofilePage->std_id !!}" hidden="">

            <input type="text" name="academic_year" placeholder="Academic year.."> 
            <button>view</button>    
            </form>
            </li>

标签: phplaraveleloquent

解决方案


有几件事要测试。首先,检查方法中的$std_id变量,以确保它正确地从您的表单/路由转换为方法。

public function showResult(Request $request, $std_id){
     dd($std_id);

如果这是一个格式正确的整数/id,请检查数据库以确保在学生表中实际分配了 id,并且如果您使用软删除(deleted_at列),它不会被软删除。

如果那里一切顺利,请查看Student模型本身。模型是否指向正确的表?Laravel 假设该表名为“students”。如果没有,您是否在模型中声明了该表?

public $table = 'mySpecialStudentsTableName';

此外,id 类型是否正确与传入的内容相对应。我假设它是一个整数,但如果它正在寻找一个字符串/uuid,那么它是否正确地来自该$std_id变量?

最后 - 您的表单未发送正确的 ID:

<form action="{{URL::to('/student/resultshow/{!! $studentprofilePage->std_id !!}')}}"

应该:

<form action="{{URL::to('/student/resultshow/'. $studentprofilePage->std_id)}}"

推荐阅读