Pemrograman Web ~ Controller & Interactive With DB
Assalamualaikum Warohmatullahi wabarokatu
Hallo semuanya kemabali lagi dengan saya diartikel pemrograman web , kaliini kita akan melanjutkan pembahsan laravel tetapi mengenai Controller $ Interactive Database
Pada konsep MVC , Controller adalah yang bertugas untuk menghubungkan Model dengan Views. Biasanya satu buah Controller untuk sebuah modul , Misalnya kita memiliki SiswaController, didalamnya terdapat fungsi-fungsi yang berhubungan dengan entitas/modul
Membuat Controller
- Buka CMD, masuk ke folder root project laravel anda, lalu jalankan perintah berikut php artisan make:controller SiswaController Setelah selesai nanti akan ada file baru pada folder app/Http/Controller/
- Buat manual file pada folder app/Http/Controller/SiswaController.php, lalu isi file dengan kode berikut :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class SiswaController extends Controller
{}
Hubungkan Route dengan Controller
- Buka file web.php pada folder routes lalu masukkan Codingan berikut :
Route::get('/belajar', 'SiswaController@index');
Bentuk Umum :
Route::get(‘/nama-rute’, Controller@function);
- Buat fungsi index pada SiswaController , pindah perintah yang dijalankan pada routes kedalam fungsi index, tambahkan Codingan berikut di SiswaControler
public function index()
{
$data['nama'] = "Taufik Muhamad R";
$data['kelas'] = "XI RPL 1";
return view('belajar', $data);
}
Penjelasan :
NamaController harus berbentuk PascalCase yang artinya awal huruf pada katanya harus kapital , Nama fungsi didalam controller harus berbntuk CamelCase
StudyKasus 1
Ubah Route yang dibuat dipertemuan sebelumnya ke SiswaController
Untuk Studi kasus pertama ini cukup mudah tinggal mengikuti cara sebelumnya memindah-mindahkan saja dari routes ke controller ,
routes/web.php
Route::get('/', function () {
return view('welcome');
});
Route::get('/belajar', 'SiswaController@index');
Route::get('/siswa', 'SiswaController@compact');
Route::get('/home', 'SiswaController@home');
Route::get('/help', 'SiswaController@help');
Route::get('/about', 'SiswaController@about');
Interaksi Dengan Database
- Pada percobaan berikutnya , kita akan mencoba menampilkan data dari tabel t_siswa, Sebelumnya isilah data pada tabel t_siswa minimal 5 data yang berbeda
- Jika sudah ubah fungsi index pada Siswa Controller , seperti berikut :
public function index()
{
$data['siswa'] = DB::table('t_siswa')->get();
return view('belajar', $data);
}
- Ubah Codingan di views\belajar.blade.php menjadi seperti berikut
<h2>Belajar php Halaman dari Controllers</h2><br>
<style>
table {
margin: auto;
padding: 10px;
border: 2px solid black;
width: 500px;
height: 300px;
}
th {
border-bottom: 1px solid grey;
}
</style>
<table collspacing="0">
<tr>
<th>No</th>
<th>NamaLengkap</th>
<th>Jenis Kelamin</th>
<th>Golongan Derah</th>
</tr>
@foreach ($siswa as $row)
<tr>
<td>{{ isset ($i) ? ++$i : $i = 1 }}</td>
<td>{{ $row->nama_lengkap }}</td>
<td>{{ $row->jenkel }}</td>
<td>{{ $row->goldar }}</td>
</tr>
@endforeach
</table>
*Untuk CSS nya menyusaikan sesuai keinginan masing-masing
Penjelasan :
@foreach dan @endforeach merupakan fitur dari laravel yang namanya blade templating. Ini memudahkan para developer dalam menuliskan sintaks daripada membuka tag php lalu menutupnya.
Facade DB :
DB merupakan facade dari laravel untuk berinteraksi dengan database, Facade itu sendiri adalah hasil dari implementasi class dengan method static , sehingga perogrammer dapat dengan mudah mengaksesnya hanya dengan memanggil nama class dan fungsinya secara static (Facades Pattern). DB digunakan untuk berinteraksi dengan tabel-tabel pada database namun belum berbasis objek( Belum menggunakan Eluquent ORM) tetapi sudah menggunakan fungsi-fungsi yang disediakan oleh laravel
Hasil :
Kita juga bisa menggunakan query orderby ataupun where
Contoh
- OrderBy
Caranya tinggal tambahkan orderBy('jenkel') setelah DB::table
2. Where
Tambahkan Codingan berikut pada fungsi index , untuk menampilkan kolom nama_lengkap yang memakai huruf a
public function index()
{
$data['siswa'] = DB::table('t_siswa')
->orderBy('jenkel')
->where('nama_lengkap', 'like', '%a%')
->get();
return view('belajar', $data);
}
Studi Kasus 2
- Isi data pada t_kelas
- Lalu tampilkan seperti contoh sebelumnya
Pertama yang harus dilakukan yaitu mengisi data pada t_kelas , Jika sudah kita buat controller baru , dengan melakukan perintah
php artisan make:controller KelasController
Lalu buka dan tambahkan fungsi index seperti berikut :
public function index()
{
$data['kelas'] = DB::table('t_kelas')->get();
return view('kelas', $data);
}
Lalu buat Viewsnya untuk menampilkan data, Contohnya seperti berikut dengan membuat file baru kelas.blade.php di folder views:
<style>
table {
margin: auto;
padding: 10px;
border: 2px solid black;
border-radius: 5px;
width: 800px;
height: 500px;
}
th {
border-bottom: 2px solid black;
background: gray;
}
</style>
<table>
<tr>
<th>Nama Kelas</th>
<th>Nama Jurusan</th>
<th>Lokasi Ruangan</th>
<th>Wali Kelas</th>
</tr>
@foreach($kelas as $k)
<tr>
<td>{{ $k->nama_kelas }}</td>
<td>{{ $k->jurusan }}</td>
<td>{{ $k->lokasi_ruangan }}</td>
<td>{{ $k->nama_wali_kelas }}</td>
</tr>
@endforeach
</table>
Jangan lupa buat routingnya , di foleder routes/web.php
Route::get('/kelas', 'KelasController@index');
Maka hasilnya akan seperti berikut :
Studi Kasus 3
- Tampilkan data kelas berdasarkan lokasi ruangan
- Tampilkan data nama wali kelas yang memilki huruf A
- Tampilkan data kelas berdasarkan nama_kelas dan jurusan
- Tampilkan data kelsa audio video saja
orderBy lokasi_ruangan
Query :
$data['kelas'] = DB::table('t_kelas')
->orderBy('lokasi_ruangan')
->get();
Menampilkan Guru yang memiliki huruf A
$data['kelas'] = DB::table('t_kelas')
->orderBy('nama_kelas', 'ASC', 'jurusan', 'ASC')
->where('nama_wali_kelas','LIKE','A%')
->get();
Menampilkan berdasarkan nama_kelas dan jurusan
Query :
$data['kelas'] = DB::table('t_kelas')
->orderBy('nama_kelas', 'ASC', 'jurusan', 'ASC')
->get();
Menampilkan hanya kelas jurusan Audio Video
Query :
$data['kelas'] = DB::table('t_kelas')
->orderBy('nama_kelas', 'ASC', 'jurusan', 'ASC')
->where('jurusan', 'Audio Video')
->get();
Comments
Post a Comment