I’m encountering an issue when trying to display student data in a Laravel view. When I attempt to access the id property of the student object in the view, I get an ErrorException: Attempt to read property ‘id’ on bool.
This is my Controller
public function show($id)
{
$mahasiswa = Mahasiswa::with('mataKuliah')->find($id);
$mataKuliah = MataKuliah::all();
if (!$mahasiswa) {
return redirect()->route('daftar-krs')->with('error', 'Student not found');
}
return view('Krs.Index', compact('mahasiswa', 'mataKuliah'));
}
View
<!DOCTYPE html>
<html lang="en">
<head>
@include('Template.head')
</head>
<body>
@include('Template.navbar')
@include('Template.sidebar')
<main id="main" class="main">
<div class="pagetitle">
<h1>Tambah Kartu Rencana Studi (KRS)</h1>
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ route('beranda') }}">Home</a></li>
<li class="breadcrumb-item active">Tambah KRS</li>
</ol>
</nav>
</div>
<section class="section">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h5 class="card-title">Input KRS</h5>
@if($mahasiswa)
<form method="POST" action="{{ route('simpan-krs') }}">
@csrf
<div class="form-group mb-3">
<label for="mahasiswa_id">Mahasiswa</label>
<select name="mahasiswa_id" id="mahasiswa_id" class="form-control" required>
<option value="">Pilih Mahasiswa</option>
@foreach($mahasiswa as $m)
<option value="{{ $m->id }}">{{ $m->name }}</option>
@endforeach
</select>
</div>
<div class="form-group mb-3">
<label for="mata_kuliah_ids">Mata Kuliah</label>
<select name="mata_kuliah_ids[]" id="mata_kuliah_ids" class="form-control" multiple required>
@foreach($mataKuliah as $mk)
<option value="{{ $mk->id }}">{{ $mk->name }}</option>
@endforeach
</select>
</div>
<div class="form-group mb-3">
<label for="nilai">Nilai</label>
<input type="text" name="nilai[]" class="form-control" placeholder="Masukkan nilai untuk masing-masing mata kuliah, pisahkan dengan koma (contoh: 80, 85, 90)" required>
</div>
@else
@endif
<p>Data mahasiswa tidak ditemukan.</p>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
</div>
</section>
</main>
<footer id="footer" class="footer">
@include('Template.footer')
</footer><!-- End Footer -->
@include('Template.scripts')
</body>
</html>
Route
Route::get('/krs', [KrsController::class, 'index'])->name('daftar-krs');
Route::get('/krs/edit/{id}', [KrsController::class, 'show'])->name('edit-krs');
Route::post('/krs-simpan', [KrsController::class, 'store'])->name('simpan-krs');
Error Message:
ErrorException: Attempt to read property “id” on bool
- Verified the query in the controller to ensure data is present.
- Added null checks in the view.