Assalamualaikum wr wb
Pagi apel seperti biasa
Lanjut membuat sistem informasi manajemen prakerin
membuat table guru pembimbing
sesuai dengan skema database kemarin kita akan menghubungkan 3 tabel yaitu tabel guru pembimbing,kelas,siswa
1.Migration
Schema::create('gurupem', function (Blueprint $table) {
$table->id();
$table->string('nama_guru');
$table->unsignedBigInteger('kelas_id');
$table->unsignedBigInteger('siswa_id');
$table->integer('nis_siswa');
$table->foreign('kelas_id')->references('id')->on('kelas')->onDelete('cascade')
->onUpdate('cascade');
$table->foreign('siswa_id')->references('id')->on('siswa')->onDelete('cascade')
->onUpdate('cascade');
$table->softDeletes();
$table->timestamps();
});
Kita masih menggunakan laravel eloquent relationship
gurupem <= kelas => siswa
2.models
class Gurupem extends Model
{
use HasFactory;
protected $table ='gurupem';
protected $quarded = ['id'];
protected $fillable = ['nama_guru','siswa_id','kelas_id','nis_siswa'];
public function siswa()
{
return $this->belongsTo(Siswa::class);
}
public function kelas()
{
return $this->belongsTo(Kelas::class);
}
}
tambahkan ini pada model kelas
public function gurupem()
{
return $this->hasMany(Gurupem::class, 'kelas_id','id');
}
pada model siswa
public function Gurupem()
{
return $this->hasMany(Gurupem::class, 'siswa_id','id');
}
3.Controller
public function index()
{
$siswa = Siswa::all();
$kelas = Kelas::all();
$gurupem = Gurupem::all();
return view('guru-pembimbing.index',compact('gurupem','siswa','kelas'));
}
public function create()
{
$kelas = Kelas::all();
$siswa = Siswa::all();
return view('guru-pembimbing.create',compact('kelas','siswa'));
}
public function store(Request $request)
{
$request->validate([
'nama_guru' => 'required',
'kelas_id' => 'required',
'siswa_id' => 'required',
'nis_siswa' => 'required',
]);
$gurupem = new Gurupem;
$gurupem->nama_guru = $request->nama_guru;
$gurupem->kelas_id = $request->kelas_id;
$gurupem->siswa_id = $request->siswa_id;
$gurupem->nis_siswa = $request->nis_siswa;
$gurupem->save();
return to_route('guru-pembimbing.index')->with('success','Data Berhasil Ditambahkan');
}
public function edit($id)
{
$siswa = Siswa::all();
$kelas = Kelas::all();
$gurupem = Gurupem::find($id);
return view('guru-pembimbing.edit',compact('gurupem','siswa','kelas'));
}
public function update(Request $request, $id)
{
$request->validate([
'nama_guru' => 'required',
'kelas_id' => 'required',
'siswa_id' => 'required',
'nis_siswa' => 'required',
]);
$gurupem = Gurupem::find($id);
$gurupem->nama_guru = $request->nama_guru;
$gurupem->kelas_id = $request->kelas_id;
$gurupem->siswa_id = $request->siswa_id;
$gurupem->nis_siswa = $request->nis_siswa;
$gurupem->save();
return to_route('guru-pembimbing.index')->with('success','Data Berhasil Diupdate');
}
public function destroy($id)
{
$gurupem = Gurupem::find($id);
$gurupem->delete();
return back()->with('danger','Data Berhasil Di hapus');
}
4. Membuat fungsi mengambil data siswa & nis sesuai dengan kelas yg di pilih
Konsep :
Form berisi nama guru, kelas siswa, nama siswa,nis siswa
Jika user memilih kelas maka option pada form tsbt akan memunculkan data sesuai, nama-nama siswa yang sudah terdaftar pada tabel kelas ,dan NIS akan terisi secara otomatis sesuai dengan yg ada di tabel siswa .
Fitur ini di bantu dengan Ajax & Select 2
Referensi :
a.https://youtu.be/N5ctY9nPt9o?si=Oym9z3dKtEeE5qqa
b.https://youtu.be/66Kuv1b2_pg?si=oMvzG7ZcR6nhL5Oo
5.Blade.php
<div class="form-group mb-3">
<label for="">Kelas</label>
<select name="kelas_id" id="kelas">
<option value="">--Pilih Kelas--</option>
@foreach ($kelas as $kls)
<option value="{{ $kls->id }}">{{ $kls->kelas_jurusan_siswa }}</option>
@endforeach
</select>
</div>
<div class="form-group mb-3">
<label for="">Nama Siswa</label>
<select name="siswa_id" id="siswa">
<option value="">--Pilih Siswa--</option>
option akan muncul secara otomatis
berdasarkan kelas yg di pilih
</select>
</div>
<div class="form-group mb-3">
<label for="">NIS SISWA</label> --terisi otomatis sesuai dengan id
siswa
<input type="text" id="nis_siswa" name="nis_siswa" readonly>
</div>
6.Script
<script>
$(function () {
$.ajaxSetup({
headers:{'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
});
// MENGAMBIL ID SIWA BERDASARKAN KELAS SISWA
$(function(){
$('#kelas').on('change',function(){
let id_kelas = $('#kelas').val();
$.ajax({
type: 'POST',
url : "{{ route('getSiswa') }}",
data: {id_kelas:id_kelas},
cache: false,
success:function(response){
$('#siswa').html(response.options);
},
error: function(data){
console.log('error',data)
}
})
})
});
// MENGAMBIL NILAI NIS AGAR TERINPUT OTOMATIS
$('#siswa').on('change', function () {
let id_siswa = $(this).val();
$.ajax({
type: 'POST',
url: "{{ route('getNis') }}",
data: {id_siswa: id_siswa},
cache: false,
success: function (response) {
$('#nis_siswa').val(response.nis_siswa);
},
error: function (data) {
console.log('error', data);
}
});
});
});
</script>
7.Controller Tambahan
public function getSiswa(Request $request){
$id_kelas = $request->input('id_kelas');
$siswa = Siswa::where('kelas_id',$id_kelas)->get();
$options = "<option value=''>--Pilih Siswa--</option>"; // O
foreach($siswa as $siswas){
$options.= "<option value='$siswas->id'>$siswas->nama_siswa</option>";
}
return response()->json(['options' => $options]);
}
public function getNis(Request $request){
$id_siswa = $request->input('id_siswa');
$siswa = Siswa::find($id_siswa);
return response()->json(['nis_siswa' => $siswa->nis_siswa]);
}
8.Route
Route::post('/getSiswa',[gurupemController::class , 'getSiswa'])->name('getSiswa');
Route::post('/getNis',[gurupemController::class , 'getNis'])->name('getNis');
nah sesuai kan dengan data yg ada di tabel siswa
Waalaikumsalam wr wb
Komentar
Posting Komentar