PWPB | Laravel [ Controller dan Interacting With DB ]
Controller dan Interacting With DB pada Laravel
Assalamualaikum wr wb, berjumpa lagi dengan saya Muhammad Fahru di blog ini. Bagaimana kabarnya teman teman semua. semoga dalam keadaan baik baik saja dan selalu bersemangat untuk mempelajari hal hal baru. Pada blog kali ini saya akan memberikan ilmu mengenai Controller pada Laravel dan Interacting With DB pada Laravel. Pada Konsep
MVC, Controller adalah
yang bertugas
untuk
menghubungkan
Model dengan
View. Biasanya,
satu
buah
Controller untuk
sebuah
modul.
Misalnya
kita
memiliki
SiswaController,
didalamnya
terdapat
fungsi-fungsi
yang berhubungan
dengan
entitas/modul. Sebelum mulai langsung saja siapkan folder Laravel kalian di text editornya masing masing dan jangan lupa browsernya.
A. Membuat Controller
1. Dengan artisan pada Laravel, Buka cmd kalian atau gitbash kalian. ketikan perintah "php artisan make:controller Siswa Controller". Jika berhasil maka di folder app controller akan ada file baru, untuk contohnya lihat gambar di bawah ini
2. Dengan membuat controller manual, jika kita akan membuat controller dengan cara manual kalian bisa copy kodingan di bawah ini.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SiswaController extends Controller {
//
}
B. Hubungkan Route dengn Controller
Buka file web.php pada folder routes, bentuk umum penulisan route dengan controller yaitu Route::get(‘/nama-rute’, Controller@function); . Sebagai contoh bisa kita lihat gambar di bawah ini
C. Buat function baru pada controller Siswa tadi
Buat
fungsi
index pada SiswaController,
pindahkan
perintah yang telah kita buat pada blog
intoducing Laravel yang dijalankan pada routes kedalam fungsi index. Untuk lebih jelasnya copy
kodingan di bawah ini ke dalam file controller
intoducing Laravel yang dijalankan pada routes kedalam fungsi index. Untuk lebih jelasnya copy
kodingan di bawah ini ke dalam file controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SiswaController extends Controller {
public function index()
{
// Cara 1
$data['nama'] = "Muhammad Fahru";
$data['gender'] = "Laki -Laki";
$data['ttl'] = "Bandung 9 September 2003";
return view('belajar', $data);
// Cara 2
$nama = "Muhammad Ozi";
$gender = "Laki - Laki";
$ttl = "Bandung 9 September 2003";
return view('belajar',compact('nama','gender','ttl'));
}
}
D. Setelah kita hubungkan controller tadi di route kita panggil array pada file belajar, untuk kodingan bisa dilihat dibawah ini dan hasilnya
@extends('layouts.master')
@section('title','Data Siswa')
@section('siswa','active')
@section('content')
<center>
<div class="card mt-5" style="width:80%">
<div class="card-header"><h2>Data Siswa SMK Negeri 4 Bandung</h2></div>
<div class="card-body">
<table border="1" cellspacing="0" cellpadding="10" width="50%">
<tr>
<td>Nama</td>
<td>:</td>
<td>{{$nama}}</td>
</tr>
<tr>
<td>Jenis Kelamin</td>
<td>:</td>
<td>{{$gender}}</td>
</tr>
<tr>
<td>TTL</td>
<td>:</td>
<td>{{$ttl}}</td>
</tr>
</table>
</div>
</div>
</center>
@endsection
Hasil kodingan di atas
D. Interaksi dengan Database
Kita akan mencoba menampilkan data dari tabel t_siswa. Sebelumnya database harus sudah memiliki data terutama pada tabel t_siswa. Jika belum isi dulu tabel t_siswa dengan data dummy.
Buka file SiswaController.php dan tambahkan kodingan di bawah ini
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SiswaController extends Controller {
public function index() {
$data['siswa'] = \DB::table('t_siswa')->get();
return view('siswa',$data);
}
}
Buka file belajar.blade.php dan tambahkan kodingan di bawah ini
<center>
<div class="card mt-5" style="width:80%">
<div class="card-header">
<div class="row">
<h2 style="margin-left:340px; margin-right:290px;" class="text-info">Data Siswa SMK Negeri 4 Bandung</h2>
<a href="{{ url('create-siswa') }}"><i class="fas fa-user-plus fa-2x mt-2"></i></a>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered text-center" id="dataTable" border="1" cellspacing="0" cellpadding="10" width="100%">
<thead>
<tr align="center" class="text-dark">
<th>No</th>
<th>Foto</th>
<th>NIS</th>
<th>Nama Lengkap</th>
<th>Jenis Kelamin</th>
<th>Golongan Darah</th>
<th>Action</th>
</tr>
</thead>
@foreach ($siswa as $row)
<tr align="center">
<td>{{$loop->iteration}}</td>
<td width="60"><img src="/image/ava.png" width="90%"></td>
<td>{{$row->nis}}</td>
<td>{{$row->nama_lengkap}}</td>
<td>{{$row->jenis_kelamin}}</td>
<td>{{$row->golongan_darah}}</td>
<td>
<a href="" class="btn btn-success" style="width:80px;" >Edit</a>
<a href="" class="btn btn-danger" style="width:80px;" onclick="return confirm('Yakin akan menghapus data ini ?');">Delete</a>
</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
</center>
Penjelasan
- Facade DB
DB merukapan
facade dari Laravel untuk
berinteraksi
dengan
Database. Facade
itu sendiri adalah hasil dari implementasi class dengan method static, sehingga programmer dapat dengan mudah mengaksesnya hanya dengan memanggil nama class dan fungsinya secara static (Facades Pattern).
- DB bentuk standard untuk berinteraksi dengan Database
DB digunakan untuk berinteraksi dengan tabel-tabel pada database namun belum berbasis objek (Belum menggunakan Eloquent ORM), tetapi sudah menggunakan fungsi-fungsi yang disediakan oleh Laravel
- @foreach
Digunakan
untuk
melakukan
looping data yang terdapat
pada array atau
object. Bentuk
umum
nya
sama
seperti
penggunaan
foreach pada php.
- @endforeach
Digunakan
untuk
menutup
blok
foreach yang sudah
didefinisikan
di awal.
Setiap
blok
foreach harus
ditutup
dengan
endforeach
Hasil ( disini saya sudah memberikan style pada halaman belajar ) :
OrderBy
saat kita akan melakukan penyusunan atau orderby kita cukup menambahkan fungsi orderBy() pada kodingan di controller.
Where
saat kita akan menyeleksi data yang kita akan tampilkan kita cukup menambahkan fungsi where() pada kodingan di controller
Untuk contoh penggunaan orderBy() dan where() , kita lihat saja kodingan di bawah ini
Untuk hasil kodingan di atas bisa dilihat pada gambar di bawah ini
Studi Kasus
1. Isi data t_kelas dengan data dummy
2. Buat controller dan view untuk menampilkan data t_kelas
a. KelasController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class KelasController extends Controller
{
public function index() {
$data['kelas'] = \DB::table('t_kelas')->get();
return view('kelas',$data);
}
}
b. kelas.blade.php
<center>
<div class="card mt-5" style="width:70%;">
<div class="card-header">
<h2 class="text-info">Daftar Profile Kelas di SMK Negeri 4 Bandung</h2>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered text-center" id="dataTable" border="1" cellspacing="0" cellpadding="10" width="100%">
<thead>
<tr class="text-dark">
<th>No</th>
<th>Nama Kelas</th>
<th>Jurusan</th>
<th>Lokasi Lab Jurusan</th>
<th>Wali Kelas</th>
</tr>
</thead>
@foreach ($kelas as $row)
<tr>
<td>{{$loop->iteration}}</td>
<td>{{$row->nama_kelas}}</td>
<td>{{$row->jurusan}}</td>
<td>{{$row->lokasi_lab}}</td>
<td>{{$row->nama_wali_kelas}}</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
</center>
Hasilnya :
3. Menampilkan data t_kelas diurutkan berdasarkan lokasi ruangan dan menampilkan data t_kelas yang memiliki nama wali kelas diawali huruf b saja
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class KelasController extends Controller
{
public function index() {
$data['kelas'] = \DB::table('t_kelas')
->orderBy('lokasi_lab','DESC')
->where('nama_wali_kelas','LIKE','b%')
->get();
return view('kelas',$data);
}
}
Hasilnya :
4. Menampilkan data t_kelas diurutkan berdasarkan nama kelasnya dan menampilkan data t_kelas hanya data jurusan Teknik Elektronika Audio Video
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class KelasController extends Controller
{
public function index() {
$data['kelas'] = \DB::table('t_kelas')
->orderBy('nama_kelas','ASC')
->where('jurusan','LIKE','%Audio%')
->get();
return view('kelas',$data);
}
}
Hasilnya :
Mungkin cukup sekian materi yang dapat saya sampaikan pada blog kali ini, semoga materi yang saya berikan dapat bermanfaat untuk teman teman semua dan bisa berguna untuk menyelesaikan error error pada kodingan teman teman, mohon maaf jika ada kesalahan penulisan maupun kata. Wassalamualaikum wr wb


0 Comments