Controller & Facade DB
Dalam Laravel, Controller berfungsi sebagai pusat kendali atau "otak" aplikasi yang menerima permintaan (request) dari pengguna, memproses logika bisnisnya, dan mengembalikan hasil (response) berupa tampilan atau data. Sementara itu, Facade DB adalah fitur bawaan yang bertindak sebagai jalan pintas untuk berkomunikasi langsung dengan database, baik menggunakan sintaksis Query Builder maupun perintah SQL mentah. Dalam praktiknya, kedua fitur ini bekerja erat di mana Controller mengatur alur kerja program, sedangkan Facade DB digunakan di dalamnya untuk mengambil atau memanipulasi data dari database secara cepat dan aman.
STUDI KASUS 1 : Pindahkan 3 route yang sebelumnya anda buat di routes ke SiswaController
Membuat tiga route berbeda yang berhasil dipusatkan ke satu pintu gerbang logika yang sama, yaitu method index di dalam SiswaController. Jika nanti teksnya ingin diubah, cukup mengubahnya di satu tempat saja (di dalam Controller), tanpa perlu mengedit file routes satu per satu.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\SiswaController;
// Route default
Route::get('/', function () {
return view('welcome');
});
// Pindahan ke SiswaController
Route::get('/Rafie-Ganteng', [SiswaController::class, 'index']);
Route::get('/Yagitu-Deh', [SiswaController::class, 'index']);
Route::get('/Cape-Ahh', [SiswaController::class, 'index']);
}
kemudian ketiga route berbeda tersebut telah berhasil dipusatkan ke satu pintu gerbang logika yang sama, yaitu method index di dalam SiswaController.
Output Route :
STUDI KASUS 2:
1. Isi data dummy untuk tabel t_kelas dengan data kelas XI di SMK Negeri 4 Bandung (Semua jurusan, 15 kelas) 2. Lakukan hal yang sama seperti tabel t_siswa untuk tabel t_kelas, buatlah Controller dan Modifikasi view-nya untuk menampilkan data dari t_kelas
Data Dummy di phpMyAdmin :
Kodingan KelasController :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class KelasController extends Controller
{
public function index1()
{
$siswa = DB::table('t_kelas')->get();
return view('kelas', compact('datakelas'));
}
}
Kodingan Views Kelas :
<Belajar Laravel, Tulisan ini ditampilkan dari Views<br>
<table border="1">
<tr>
<td>no</td>
<td>nama kelas</td>
<td>jurusan</td>
<td>lokasi ruangan</td>
<td>nama wali kelas</td>
</tr>
@foreach ($siswa as $row)
<tr>
<td>{{ isset($i) ? ++$i : $i = 1 }}</td>
<td>{{ $row->nama_kelas }}</td>
<td>{{ $row->jurusan }}</td>
<td>{{ $row->lokasi_ruangan }}</td>
<td>{{ $row->nama_wali_kelas }}</td>
</tr>
@endforeach
</table>
Tampilan Views Kelas di Web Browser :
STUDI KASUS 3 : Lakukan beberapa query dibawah ini untuk menampilkan data pada t_kelas:
1. Tampilkan data dari t_kelas, diurutkan berdasarkan lokasi ruangan
Code :
<<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class KelasController extends Controller
{
/**
* Menampilkan data dari tabel t_kelas
* diurutkan berdasarkan lokasi_ruangan
*/
public function index()
{
// Ambil semua data dari tabel t_kelas dan urutkan
$dataKelas = DB::table('t_kelas')
->orderBy('lokasi_ruangan', 'asc')
->get();
// Kirim data ke view (misal: resources/views/kelas/index.blade.php)
return view('Rafie-Kece', compact('dataKelas'));
}
}
2. Tampilkan data dari t_kelas yang memiliki nama wali kelas diawali huruf A saja
Code :
<<<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class KelasController extends Controller
{
/**
* Menampilkan data dari t_kelas
* yang wali_kelas-nya diawali huruf 'A'
*/
public function index1()
{
// Ambil data dari t_kelas di mana nama wali_kelas dimulai dengan 'A'
$dataKelas = DB::table('t_kelas')
->where('nama_wali_kelas', 'like', 'A%')
->get();
// Kirim ke view
return view('kelas', compact('dataKelas'));
}}
3. Tampilkan data dari t_kelas diurutkan berdasarkan jurusan dan nama_kelas
Code :
<<<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class KelasController extends Controller
{
/**
* Menampilkan data dari t_kelas
* yang wali_kelas-nya diawali huruf 'A'
*/
public function index1()
{
// Ambil data dari t_kelas di mana nama wali_kelas dimulai dengan 'A'
$dataKelas = DB::table('t_kelas')
->orderBy('jurusan', 'asc')
->orderBy('nama_kelas', 'asc')
->get();
// Kirim ke view
return view('kelas', compact('dataKelas'));
}
}
4. Tampilkan data dari t_kelas hanya data jurusan Rekayasa Perangkat Lunak saja
Code :
<<<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class KelasController extends Controller
{
/**
* Menampilkan data dari t_kelas
* yang wali_kelas-nya diawali huruf 'A'
*/
public function index1()
{
// Ambil data dari t_kelas di mana nama wali_kelas dimulai dengan 'A'
$dataKelas = DB::table('t_kelas')
->where('jurusan', '=', 'Rekayasa Perangkat Lunak')
->orderBy('nama_kelas', 'asc')
->get();
// Kirim ke view
return view('kelas', compact('dataKelas'));
}
}