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

<?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