Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #13: CRUD Laravel Menggunakan Query Builder

 

 

Pada tutorial ini, Anda akan belajar cara melakukan operasi CRUD (Create, Read, Update, Delete) di Laravel menggunakan Query Builder. Query Builder menyediakan antarmuka yang lebih fleksibel dan chainable untuk membuat query SQL, tetapi tetap aman dari serangan SQL Injection.


 

Perbedaan dengan Eloquent

 

  • Eloquent ORM: Bekerja dengan objek model, lebih berorientasi objek. Cocok untuk tabel yang memiliki model.
  • Query Builder: Bekerja langsung dengan tabel database, lebih berorientasi pada query SQL. Cocok untuk query yang kompleks atau untuk tabel yang tidak memiliki model.

 

Langkah 1: Mengambil Data (Read)

 

Untuk menampilkan data, kita menggunakan metode DB::table() untuk memilih tabel, diikuti dengan metode get().

Buka routes/web.php atau buat controller baru, dan tambahkan kode berikut:

PHP

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Route;

Route::get('/read', function () {
    // Mengambil semua data dari tabel 'products'
    $products = DB::table('products')->get();

    // Mengambil data dengan kondisi WHERE
    // $products = DB::table('products')->where('name', 'Product A')->get();

    // Mengambil satu baris data
    // $product = DB::table('products')->where('id', 1)->first();

    return view('products', ['products' => $products]);
});

Penjelasan:

  • DB::table('products'): Ini adalah pintu masuk ke Query Builder, yang menargetkan tabel products.
  • ->get(): Mengembalikan semua baris dalam bentuk array dari objek stdClass.
  • ->where(...): Menambahkan klausa WHERE pada query.
  • ->first(): Mengambil hanya satu baris pertama dari hasil query.

Anda dapat menampilkan hasilnya di view yang sama seperti pada tutorial Eloquent sebelumnya.


 

Langkah 2: Menginput Data (Create)

 

Untuk menginput data, kita menggunakan metode insert() pada Query Builder.

PHP

use Illuminate\Http\Request;

Route::post('/create', function (Request $request) {
    DB::table('products')->insert([
        'name' => $request->input('name'),
        'description' => $request->input('description'),
        'created_at' => now(),
        'updated_at' => now(),
    ]);

    return redirect('/read')->with('success', 'Data berhasil ditambahkan!');
});

Penjelasan:

  • DB::table('products')->insert(...): Metode ini menerima sebuah array asosiatif di mana kunci-kunci adalah nama kolom dan nilai-nilai adalah data yang akan dimasukkan.
  • now(): Helper Laravel untuk mendapatkan timestamp saat ini.

 

Langkah 3: Memperbarui Data (Update)

 

Untuk memperbarui data, kita menggunakan kombinasi where() dan update().

PHP

Route::put('/update/{id}', function (Request $request, $id) {
    DB::table('products')
        ->where('id', $id)
        ->update([
            'name' => $request->input('name'),
            'description' => $request->input('description'),
            'updated_at' => now(),
        ]);

    return redirect('/read')->with('success', 'Data berhasil diperbarui!');
});

Penjelasan:

  • ->where('id', $id): Sangat penting untuk menentukan data mana yang akan diperbarui. Jika where() tidak digunakan, semua baris di tabel akan terperbarui.
  • ->update(...): Metode ini menerima sebuah array data yang akan diperbarui.

 

Langkah 4: Menghapus Data (Delete)

 

Untuk menghapus data, kita menggunakan metode delete() setelah menentukan kondisi where().

PHP

Route::delete('/delete/{id}', function ($id) {
    DB::table('products')
        ->where('id', $id)
        ->delete();

    return redirect('/read')->with('success', 'Data berhasil dihapus!');
});

Penjelasan:

  • ->where('id', $id): Sama seperti update(), ini menentukan baris mana yang akan dihapus.
  • ->delete(): Mengeksekusi perintah hapus.

 

Menggabungkan ke dalam Controller

 

Praktik terbaik adalah menempatkan logika ini di dalam controller untuk memisahkan logika dari routing.

Contoh:

PHP

// app/Http/Controllers/ProductController.php
use App\Models\Product; // Jika masih ingin menggunakan
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; // Impor Query Builder

class ProductController extends Controller
{
    public function index()
    {
        $products = DB::table('products')->get();
        return view('products.index', ['products' => $products]);
    }
    
    public function store(Request $request)
    {
        // ... validasi
        DB::table('products')->insert([
            'name' => $request->input('name'),
            'description' => $request->input('description'),
            'created_at' => now(),
            'updated_at' => now(),
        ]);
        return redirect()->route('products.index');
    }

    public function update(Request $request, $id)
    {
        // ... validasi
        DB::table('products')->where('id', $id)->update([
            'name' => $request->input('name'),
            'description' => $request->input('description'),
            'updated_at' => now(),
        ]);
        return redirect()->route('products.index');
    }

    public function destroy($id)
    {
        DB::table('products')->where('id', $id)->delete();
        return redirect()->route('products.index');
    }
}

 

Selesai!

 

Query Builder adalah alternatif yang kuat untuk Eloquent, terutama ketika Anda membutuhkan kontrol yang lebih besar atas query SQL atau bekerja dengan tabel yang tidak memiliki model. Dengan memahaminya, Anda memiliki lebih banyak opsi untuk berinteraksi dengan database di Laravel.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek