Assalamualaikum Wr, Wb. Kembali lagi bersama saya di SchoolBlog. Untuk pertemuan kali ini saya akan membahas mengenai Eloquent. Mari langsung saja ke pembahasannya yuk!
Eloquent adalah salah satu fitur yang menarik yang dimiliki oleh Laravel, dengan adanya eloquent ini kita dapat berinteraksi dan memanipulasi database sesuai dengan yang kita mau. Setiap model Eloquent yang telah dibuat adalah representasi table dari databse yang ada.
Nah, untuk cara penulisannya langsung saja kita mulai yuk!
Step 1
Buat model baru pada folder app dengan nama Siswa.php . lalu isi dengan format ini :
orderBy('jenis_kelamin')
//->where('nama_lengkap', 'like', '%o%')
//->get();
$data['siswa'] = \App\Siswa::orderBy('jenis_kelamin')->get();
return view('siswa', $data);
}
public function create()
{
return view('siswa.form');
}
public function store(Request $request)
{
$rule = [
'nis' => 'required|numeric',
'nama_lengkap' => 'required|String',
'jenis_kelamin' => 'required',
'golongan_darah' => 'required'
];
$this->validate($request, $rule);
$input = $request->all();
// unset($input['_token']);
// $status = \DB::table('t_siswa')->insert($input);
// $status = \App\Siswa::create($input);
$siswa = new \App\Siswa;
$siswa->nis = $input['nis'];
$siswa->nama_lengkap = $input['nama_lengkap'];
$siswa->jenis_kelamin = $input['jenis_kelamin'];
$siswa->kelas = $input['kelas'];
$siswa->golongan_darah = $input['golongan_darah'];
$status = $siswa->save();
if ($status) {
return redirect('/siswa')->with('success', 'Data berhasil ditambahkan');
}else{
return redirect('/siswa/create')->with('error', 'Data gagal ditambahkan');
}
}
public function edit(Request $request, $id)
{
$data['siswa'] = \DB::table('t_siswa')->find($id);
return view('siswa.form', $data);
}
public function update(Request $request, $id)
{
$rule = [
'nis' => 'required|numeric',
'nama_lengkap' => 'required|String',
'jenis_kelamin' => 'required',
'kelas' => 'required',
'alamat' => 'required',
'golongan_darah' => 'required',
'nama_ibu_kandung' => 'required',
'file' => 'required'
];
$this->validate($request, $rule);
$input = $request->all();
// unset($input['_token']);
// unset($input['_method']);
//
// $status = \DB::table('t_siswa')->where('id', $id)->update($input);
$siswa = \App\Siswa::find($id);
// $status = $siswa->update($input);
$siswa->nis = $input['nis'];
$siswa->nama_lengkap = $input['nama_lengkap'];
$siswa->jenis_kelamin = $input['jenis_kelamin'];
$siswa->kelas = $input['kelas'];
$siswa->golongan_darah = $input['golongan_darah'];
$status = $siswa->update();
if ($status) {
return redirect('/siswa')->with('success', 'Data berhasil diubah');
}else{
return redirect('/siswa/create')->with('error', 'Data gagal diubah');
}
}
public function destroy(Request $request, $id)
{
$siswa = \App\Siswa::find($id);
$status = $siswa->delete();
// $status = \DB::table('t_siswa')->where('id', $id)->delete();
if ($status) {
return redirect('/siswa')->with('success', 'Data berhasil dihapus');
}else{
return redirect('/siswa/create')->with('error', 'Data gagal dihapus');
}
}
}
Penjelasan : Seluruh method yang dipanggil setelah inisialisasi Eloquent sama dengan penggunaan DB Facades.
Method find hanya ada pada Eloquent Model, dan digunakan untuk mencari data pada model berdasarkan primary key. Biasanya primary key yang dicari adalah id . Selain id anda dapat mengaturnya pada model dengan meng-override variable public $primaryKey .
Untuk hasilnya sama dengan tampilan di materi DB Facades!
Studi Kasus
1. Lakukan hal yang sama seperti yang sudah dijelaskan di atas untuk tabel kelas!
Kelas.php :
orderBy('lokasi_ruangan')
// ->orderBy('jurusan')
// ->orderBy('nama_kelas')
// ->where('nama_wali_kelas', 'like', '%A%')
// ->where('jurusan', 'like', '%Teknik Audio Video%')
// ->get();
$data['kelas'] = \App\Kelas::orderBy('nama_kelas')->get();
return view('kelas', $data);
}
public function create(){
return view('kelas.form');
}
public function store(Request $request)
{
$rule = [
'nama_kelas' => 'required|String',
'jurusan' => 'required',
'lokasi_ruangan' => 'required',
'nama_wali_kelas' => 'required'
];
$this->validate($request, $rule);
$input = $request->all();
// unset($input['_token']);
// $status = \DB::table('t_kelas')->insert($input);
// $status = \App\Kelas::create($input);
$kelas = new \App\Siswa;
$kelas->id = $input['id'];
$kelas->nama_kelas = $input['nama_kelas'];
$kelas->jurusan = $input['jurusan'];
$kelas->lokasi_ruangan = $input['lokasi_ruangan'];
$kelas->nama_wali_kelas = $input['nama_wali_kelas'];
$status = $kelas->save();
if ($status) {
return redirect('/kelas')->with('success', 'Data berhasil ditambahkan');
}else{
return redirect('/kelas/create')->with('error', 'Data gagal ditambahkan');
}
}
public function edit(Request $request, $id)
{
$data['kelas'] = \DB::table('t_kelas')->find($id);
return view('kelas.form', $data);
}
public function update(Request $request, $id)
{
$rule = [
'nama_kelas' => 'required|String',
'jurusan' => 'required',
'lokasi_ruangan' => 'required',
'nama_wali_kelas' => 'required'
];
$this->validate($request, $rule);
$input = $request->all();
// unset($input['_token']);
// unset($input['_method']);
//
// $status = \DB::table('t_kelas')->where('id', $id)->update($input);
$kelas = \App\Kelas::find($id);
// $status = $siswa->update($input);
$kelas->id = $input['id'];
$kelas->nama_kelas = $input['nama_kelas'];
$kelas->jurusan = $input['jurusan'];
$kelas->lokasi_ruangan = $input['lokasi_ruangan'];
$kelas->nama_wali_kelas = $input['nama_wali_kelas'];
$status = $kelas->update();
if ($status) {
return redirect('/kelas')->with('success', 'Data berhasil diubah');
}else{
return redirect('/kelas/create')->with('error', 'Data gagal diubah');
}
}
public function destroy(Request $request, $id)
{
$kelas = \App\Kelas::find($id);
$status = $kelas->delete();
// $status = \DB::table('t_kelas')->where('id', $id)->delete();
if ($status) {
return redirect('/kelas')->with('success', 'Data berhasil dihapus');
}else{
return redirect('/kelas/create')->with('error', 'Data gagal dihapus');
}
}
}
2. Buat tabel baru untuk menyimpan data guru dengan fiel nip , nama_guru , jenis_kelamin , alamat . Buatlah migration dan view untuk CRUD nya. Cobalah gunakan ORM untuk insert dan update data pada tabel data guru tersebut!
Guru.php :
GuruController.php :
get();
return view('guru', $data);
}
public function create()
{
return view('guru.form');
}
public function store(Request $request)
{
$rule = [
'nip' => 'required|numeric',
'nama_guru' => 'required|string',
'jenis_kelamin' => 'required',
'alamat' => 'required'
];
$this->validate($request, $rule);
$input = $request->all();
// Ini eloquent bentuk 1
// $status = \App\Guru::create($input);
// Ini eloquent bentuk 2
$guru = new \App\Guru;
$guru->nip = $input['nip'];
$guru->nama_guru = $input['nama_guru'];
$guru->jenis_kelamin = $input['jenis_kelamin'];
$guru->alamat = $input['alamat'];
$status = $guru->save();
if($status){
return redirect('/guru')->with('success', 'Data berhasil ditambahkan');
} else {
return redirect('/guru/create')->with('error', 'Data gagal ditambahkan');
}
}
public function edit(Request $request, $id)
{
$data['guru'] = \DB::table('t_guru')->find($id);
return view('guru.form', $data);
}
public function update(Request $request, $id)
{
$rule = [
'nip' => 'required|numeric',
'nama_guru' => 'required|string',
'jenis_kelamin' => 'required',
'alamat' => 'required'
];
$this->validate($request, $rule);
$input = $request->all();
// Ini eloquent bentuk 1
$guru = \App\Guru::find($id);
// $status = $guru->update($input);
// Ini eloquent bentuk 2
$guru->nip = $input['nip'];
$guru->nama_guru = $input['nama_guru'];
$guru->jenis_kelamin = $input['jenis_kelamin'];
$guru->alamat = $input['alamat'];
$status = $guru->update();
if($status){
return redirect('/guru')->with('success', 'Data berhasil diubah');
}else{
return redirect('/guru/create')->with('error', 'Data gagal diubah');
}
}
public function destroy(Request $request, $id)
{
// Ini eloquent
$guru = \App\Guru::find($id);
$status = $guru->delete();
if($status){
return redirect('/guru')->with('success', 'Data berhasil dihapus');
}else{
return redirect('/guru/create')->with('error', 'Data gagal dihapus');
}
}
}
?>
guru.blade.php :
Halaman dari contollers belajar.
@if(session('success'))
{{ session('success') }}
@endif
@if(session('error'))
{{ session('error') }}
@endif
Tambah Data
No
NIP
Nama Guru
Jenis Kelamin
Alamat
Aksi
@foreach ($guru as $gr)
{{ isset($i) ? ++$i : $i = 1 }}
{{ $gr->nip }}
{{ $gr->nama_guru }}
{{ $gr->jenis_kelamin }}
{{ $gr->alamat }}
Edit ||
@method('DELETE')
@csrf
Delete
@endforeach
form.blade.php :
Tidak ada komentar:
Posting Komentar