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
  1. 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/
  2.  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 
  1. 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();

Yaa mungkin hanya segitu saja untuk kali ini , tunggu uploadan berikutnya , cyaa

Wassalamualaikum warohmatullahi wabarokatu

Comments

Popular Posts