首页 > 解决方案 > Laravel 关系中的“未定义变量 $exams(查看:/Users/pathparakh/Projects/relationship/resources/views/marks/create.blade.php)”

问题描述

这是我的“标记”模型。我有 3 个与此模型相关联的模型。

use HasFactory;

protected $table = 'marks';

protected $fillable = [
    'subject_id',
    'student_id',
    'exam_id',
    'mark',
];

public function exams() {
    return $this->belongsTo(Exam::class);
}

public function students() {
    return $this->belongsTo(Student::class);
}

public function subjects() {
    return $this->belongsTo(Subject::class);
}

这是我的考试模型。这与标记模型相关联

use HasFactory;

protected $table = "exams";

protected $fillable = [
    'exam',
];

public function marks() {
    return $this->hasMany(Mark::class);
}

这是我的 MarkController。这是我的控制器,其中链接了 3 个模型

public function index()
{
    $marks = Mark::all();
    $students = Student::all();
    $subjects = Subject::all();
    $exams = Exam::all();
    return view('marks.index', compact('marks', 'students', 'subjects', 'exams'));
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('marks.create');
}

这是我在第 20 行发生错误的标记。

<td>
    <select name="exam_id" id="exam_id" class="form-control">
        <option value="">Select One</option>
        @foreach ($exams as $exam)
        <option value="{{ $exam->id }}">{{ $exam->name }}</option>
        @endforeach
    </select>
</td>

标签: laraveleloquentlaravel-8

解决方案


你可以这样做

public function index()
{
    $marks = Mark::all();
    $students = Student::all();
    $subjects = Subject::all();
    $exams = Exam::all();
    return view('marks.index', compact('marks', 'students', 'subjects', 'exams'));
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    $exams = Exam::all(); //this part is missing
    return view('marks.create', compact('exams'));
}

推荐阅读