has('search')) { $search = $request->search; $query->where('nama_mapel', 'like', "%$search%") ->orWhere('id_mapel', 'like', "%$search%"); } // FILTER BY KELAS (lewat table mengajars) if ($request->has('filter_kelas') && $request->filter_kelas != '') { $query->whereHas('mengajars', function($q) use ($request) { $q->where('id_kelas', $request->filter_kelas); }); } // SHOW PER PAGE $perPage = $request->get('perPage', 10); $mapels = $query->paginate($perPage)->appends($request->all()); // Ambil semua kelas untuk dropdown filter $kelass = Kelas::orderBy('tingkat')->orderBy('nama_kelas')->get(); return view('admin.mapel.index', compact('mapels', 'kelass')); } public function store(Request $request) { $validated = $request->validate([ 'nama_mapel' => 'required|string|max:100', 'kelas' => 'nullable|array' ]); $mapel = Mapel::create([ 'nama_mapel' => $validated['nama_mapel'], ]); if($request->kelas){ foreach($request->kelas as $kelas){ $mapel->mengajars()->create([ 'id_kelas' => $kelas ]); } } return redirect()->route('admin.mapel.index') ->with('success','Data mata pelajaran berhasil ditambahkan!'); } public function update(Request $request, $id_mapel) { $mapel = Mapel::findOrFail($id_mapel); $validated = $request->validate([ 'nama_mapel' => 'required|string|max:100', 'kelas' => 'nullable|array' ]); $mapel->update([ 'nama_mapel' => $validated['nama_mapel'] ]); // hapus relasi lama $mapel->mengajars()->delete(); // buat relasi baru if($request->kelas){ foreach($request->kelas as $kelas){ $mapel->mengajars()->create([ 'id_kelas' => $kelas ]); } } return redirect()->route('admin.mapel.index') ->with('success','Data mata pelajaran berhasil diupdate!'); } public function destroy($id_mapel) { $mapel = Mapel::findOrFail($id_mapel); $mapel->delete(); return redirect()->route('admin.mapel.index') ->with('success', 'Data mata pelajaran berhasil dihapus!'); } }