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