Gameglimmer
  • AI
  • Produktivitas
  • Website
  • Hosting
  • Laravel
  • Database
No Result
View All Result
Gameglimmer
  • AI
  • Produktivitas
  • Website
  • Hosting
  • Laravel
  • Database
No Result
View All Result
Gameglimmer
No Result
View All Result
Home Database

Contoh Project Laravel Sederhana dengan Database MySQL: Studi Kasus dan Implementasi

Luna Abernathy by Luna Abernathy
June 21, 2025
in Database, Development, Laravel, MySQL, Panduan
0
Share on FacebookShare on Twitter

Laravel, framework PHP yang elegan dan powerful, semakin populer di kalangan developer web. Dengan sintaks yang bersih dan fitur yang lengkap, Laravel memudahkan kita dalam membangun aplikasi web yang kompleks. Nah, kalau kamu baru mulai belajar Laravel dan bingung mau mulai dari mana, artikel ini cocok banget buat kamu! Kita akan membahas Contoh Project Laravel Sederhana dengan Database MySQL, lengkap dengan studi kasus dan implementasi langkah demi langkah. Yuk, simak!

1. Mengapa Memilih Laravel dan MySQL untuk Proyek Web Sederhana?

Sebelum kita menyelam lebih dalam ke contoh project, mari kita bahas dulu kenapa kombinasi Laravel dan MySQL ini begitu menarik.

  • Laravel: Framework yang Efisien dan Produktif: Laravel menyediakan banyak fitur bawaan, seperti routing, ORM (Object-Relational Mapping) dengan Eloquent, templating engine (Blade), dan sistem otentikasi yang memudahkan pengembangan. Ini berarti kamu bisa fokus pada logika aplikasi daripada menghabiskan waktu untuk menulis kode boilerplate.
  • MySQL: Database Relasional yang Andal dan Populer: MySQL adalah sistem manajemen database relasional (RDBMS) open-source yang sangat populer. MySQL dikenal karena keandalannya, skalabilitasnya, dan kemudahan penggunaannya. Ini adalah pilihan yang tepat untuk menyimpan dan mengelola data aplikasi web kita.
  • Komunitas yang Besar dan Dukungan yang Melimpah: Laravel dan MySQL memiliki komunitas yang besar dan aktif. Ini berarti kamu bisa dengan mudah menemukan solusi untuk masalah yang kamu hadapi, serta belajar dari developer lain. Dokumentasi yang lengkap juga tersedia untuk kedua teknologi ini.
  • Skalabilitas: Meskipun kita membuat project sederhana, Laravel dan MySQL sudah mendukung skalabilitas untuk pertumbuhan aplikasi di masa depan.

Singkatnya, Laravel dan MySQL adalah kombinasi yang ideal untuk membangun aplikasi web yang sederhana, efisien, dan mudah dipelihara.

2. Studi Kasus: Aplikasi To-Do List Sederhana dengan Laravel dan MySQL

Untuk contoh project kita, kita akan membangun aplikasi To-Do List sederhana. Aplikasi ini memungkinkan pengguna untuk:

Related Post

Dokumentasi Laravel Bahasa Indonesia Terbaru: Referensi Lengkap untuk Developer

July 4, 2025

Cara Menggunakan Eloquent ORM di Laravel: Database Jadi Lebih Mudah Dikelola

July 4, 2025

Template Admin Dashboard Gratis untuk Laravel: Hemat Waktu dan Biaya!

July 4, 2025

Jasa Pembuatan Website Berbasis Laravel Profesional: Solusi Website Modern & Efisien

July 4, 2025
  • Menambahkan tugas (To-Do)
  • Menandai tugas sebagai selesai
  • Menghapus tugas

Ini adalah studi kasus yang cukup sederhana, namun cukup kompleks untuk menunjukkan dasar-dasar penggunaan Laravel dan MySQL. Aplikasi To-Do List ini akan menggunakan database MySQL untuk menyimpan data tugas.

3. Persiapan Lingkungan Pengembangan Laravel

Sebelum kita mulai membuat project, pastikan kamu sudah mempersiapkan lingkungan pengembanganmu. Kamu membutuhkan:

  • PHP: Pastikan PHP sudah terinstall di sistemmu (minimal versi 7.3).
  • Composer: Composer adalah dependency manager untuk PHP. Unduh dan install Composer dari https://getcomposer.org/.
  • MySQL: Install MySQL server dan MySQL client di sistemmu.
  • Text Editor/IDE: Pilih text editor atau IDE yang nyaman untukmu. Beberapa pilihan populer adalah VS Code, Sublime Text, dan PHPStorm.
  • XAMPP/Laragon (Optional): Jika kamu ingin menggunakan web server dan database server secara lokal, kamu bisa menggunakan XAMPP atau Laragon.

Setelah semua komponen di atas terinstall, kamu siap untuk membuat project Laravel baru.

4. Membuat Project Laravel Baru dan Konfigurasi Database MySQL

Buka terminal atau command prompt, lalu navigasikan ke direktori tempat kamu ingin menyimpan projectmu. Kemudian, jalankan perintah berikut untuk membuat project Laravel baru:

composer create-project --prefer-dist laravel/laravel todolist

Perintah ini akan membuat project Laravel baru dengan nama todolist. Setelah proses instalasi selesai, masuk ke direktori project:

cd todolist

Selanjutnya, kita perlu mengkonfigurasi database MySQL. Buka file .env di root direktori project. Cari bagian berikut:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

Ubah nilai-nilai tersebut sesuai dengan konfigurasi database MySQL kamu. Pastikan kamu sudah membuat database dengan nama yang sesuai dengan DB_DATABASE. Misalnya, jika kamu membuat database dengan nama todolist_db, maka ubah DB_DATABASE=laravel menjadi DB_DATABASE=todolist_db. Sesuaikan juga DB_USERNAME dan DB_PASSWORD dengan kredensial database kamu.

5. Membuat Model, Migration, dan Controller untuk To-Do

Sekarang, mari kita buat model, migration, dan controller untuk To-Do list kita. Jalankan perintah berikut di terminal:

php artisan make:model Todo -mcr

Perintah ini akan membuat:

  • Model: app/Models/Todo.php
  • Migration: database/migrations/[timestamp]_create_todos_table.php
  • Controller: app/Http/Controllers/TodoController.php

Buka file migration database/migrations/[timestamp]_create_todos_table.php dan ubah method up() menjadi seperti berikut:

<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateTodosTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('todos', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('description')->nullable();
            $table->boolean('completed')->default(false);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('todos');
    }
}

Kode di atas mendefinisikan tabel todos dengan kolom-kolom:

  • id: Primary key (auto-increment)
  • title: Judul tugas (string)
  • description: Deskripsi tugas (text, opsional)
  • completed: Status tugas (boolean, default false)
  • created_at: Timestamp created
  • updated_at: Timestamp updated

Selanjutnya, jalankan migration untuk membuat tabel di database:

php artisan migrate

Sekarang, buka file model app/Models/Todo.php dan tambahkan property $fillable untuk menentukan kolom mana yang boleh diisi:

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Todo extends Model
{
    use HasFactory;

    protected $fillable = [
        'title',
        'description',
        'completed',
    ];
}

Terakhir, kita akan mengisi controller app/Http/Controllers/TodoController.php dengan logic untuk menangani request HTTP.

6. Mengimplementasikan Fungsi CRUD (Create, Read, Update, Delete) pada Controller

Mari kita implementasikan fungsi CRUD pada TodoController. Berikut adalah contoh implementasi lengkapnya:

<?php

namespace AppHttpControllers;

use AppModelsTodo;
use IlluminateHttpRequest;

class TodoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return IlluminateHttpResponse
     */
    public function index()
    {
        $todos = Todo::all();
        return view('todos.index', compact('todos'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return IlluminateHttpResponse
     */
    public function create()
    {
        return view('todos.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required|max:255',
            'description' => 'nullable',
        ]);

        Todo::create($request->all());

        return redirect()->route('todos.index')
            ->with('success', 'To-Do berhasil ditambahkan!');
    }

    /**
     * Display the specified resource.
     *
     * @param  AppModelsTodo  $todo
     * @return IlluminateHttpResponse
     */
    public function show(Todo $todo)
    {
        return view('todos.show', compact('todo'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  AppModelsTodo  $todo
     * @return IlluminateHttpResponse
     */
    public function edit(Todo $todo)
    {
        return view('todos.edit', compact('todo'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  AppModelsTodo  $todo
     * @return IlluminateHttpResponse
     */
    public function update(Request $request, Todo $todo)
    {
        $request->validate([
            'title' => 'required|max:255',
            'description' => 'nullable',
        ]);

        $todo->update($request->all());

        return redirect()->route('todos.index')
            ->with('success', 'To-Do berhasil diupdate!');
    }

     /**
     * Update the specified resource in storage.  Specifically for marking complete.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  AppModelsTodo  $todo
     * @return IlluminateHttpResponse
     */
    public function complete(Todo $todo)
    {
        $todo->completed = true;
        $todo->save();

        return redirect()->route('todos.index')
            ->with('success', 'To-Do berhasil ditandai selesai!');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  AppModelsTodo  $todo
     * @return IlluminateHttpResponse
     */
    public function destroy(Todo $todo)
    {
        $todo->delete();

        return redirect()->route('todos.index')
            ->with('success', 'To-Do berhasil dihapus!');
    }
}

Kode di atas menyediakan fungsi:

  • index(): Menampilkan daftar semua To-Do.
  • create(): Menampilkan form untuk membuat To-Do baru.
  • store(): Menyimpan To-Do baru ke database.
  • show(): Menampilkan detail sebuah To-Do.
  • edit(): Menampilkan form untuk mengedit sebuah To-Do.
  • update(): Mengupdate data To-Do di database.
  • destroy(): Menghapus To-Do dari database.
  • complete(): Menandai To-Do sebagai selesai.

Perhatikan bahwa kita menggunakan validation untuk memastikan data yang masuk valid. Kita juga menggunakan redirect() untuk mengarahkan pengguna kembali ke halaman daftar To-Do setelah melakukan operasi CRUD.

7. Membuat View dengan Blade Templating Engine

Selanjutnya, kita perlu membuat view untuk menampilkan data To-Do dan form untuk membuat/mengedit To-Do. Buat direktori resources/views/todos dan buat file-file berikut:

  • index.blade.php: Menampilkan daftar To-Do.
  • create.blade.php: Form untuk membuat To-Do baru.
  • edit.blade.php: Form untuk mengedit To-Do.
  • show.blade.php: Menampilkan detail To-Do.

Berikut adalah contoh implementasi index.blade.php:

<!DOCTYPE html>
<html>
<head>
    <title>To-Do List</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <h1>To-Do List</h1>
        <a href="{{ route('todos.create') }}" class="btn btn-primary mb-3">Tambah To-Do</a>

        @if ($message = Session::get('success'))
            <div class="alert alert-success">
                <p>{{ $message }}</p>
            </div>
        @endif

        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>Judul</th>
                    <th>Deskripsi</th>
                    <th>Status</th>
                    <th>Aksi</th>
                </tr>
            </thead>
            <tbody>
                @foreach ($todos as $todo)
                    <tr>
                        <td>{{ $todo->title }}</td>
                        <td>{{ $todo->description }}</td>
                        <td>{{ $todo->completed ? 'Selesai' : 'Belum Selesai' }}</td>
                        <td>
                            <a href="{{ route('todos.show', $todo->id) }}" class="btn btn-info btn-sm">Lihat</a>
                            <a href="{{ route('todos.edit', $todo->id) }}" class="btn btn-primary btn-sm">Edit</a>
                            <form action="{{ route('todos.destroy', $todo->id) }}" method="POST" style="display: inline-block;">
                                @csrf
                                @method('DELETE')
                                <button type="submit" class="btn btn-danger btn-sm" onclick="return confirm('Apakah Anda yakin ingin menghapus To-Do ini?')">Hapus</button>
                            </form>
                             @if(!$todo->completed)
                             <form action="{{ route('todos.complete', $todo->id) }}" method="POST" style="display: inline-block;">
                                @csrf
                                <button type="submit" class="btn btn-success btn-sm">Selesaikan</button>
                            </form>
                            @endif
                        </td>
                    </tr>
                @endforeach
            </tbody>
        </table>
    </div>
</body>
</html>

Contoh implementasi create.blade.php:

<!DOCTYPE html>
<html>
<head>
    <title>Tambah To-Do</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <h1>Tambah To-Do</h1>
        <form action="{{ route('todos.store') }}" method="POST">
            @csrf
            <div class="form-group">
                <label for="title">Judul:</label>
                <input type="text" class="form-control" id="title" name="title" required>
            </div>
            <div class="form-group">
                <label for="description">Deskripsi:</label>
                <textarea class="form-control" id="description" name="description"></textarea>
            </div>
            <button type="submit" class="btn btn-primary">Simpan</button>
            <a href="{{ route('todos.index') }}" class="btn btn-secondary">Batal</a>
        </form>
    </div>
</body>
</html>

Kamu bisa membuat implementasi serupa untuk edit.blade.php dan show.blade.php. Jangan lupa untuk menggunakan Blade syntax untuk menampilkan data dan membuat form.

8. Mendefinisikan Route untuk Aplikasi To-Do List

Terakhir, kita perlu mendefinisikan route untuk aplikasi To-Do List. Buka file routes/web.php dan tambahkan kode berikut:

<?php

use IlluminateSupportFacadesRoute;
use AppHttpControllersTodoController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return redirect()->route('todos.index');
});

Route::resource('todos', TodoController::class);
Route::post('todos/{todo}/complete', [TodoController::class, 'complete'])->name('todos.complete');

Kode di atas mendefinisikan route untuk semua fungsi CRUD pada TodoController menggunakan Route::resource(). Kita juga menambahkan route untuk halaman index dan fungsi complete().

9. Menguji Aplikasi To-Do List Sederhana

Setelah semua langkah di atas selesai, kamu bisa menguji aplikasi To-Do List kamu. Jalankan server development Laravel:

php artisan serve

Buka browser dan akses http://localhost:8000/todos. Kamu seharusnya melihat daftar To-Do (yang masih kosong). Kamu bisa menambahkan To-Do baru, mengedit To-Do, menghapus To-Do, dan menandai To-Do sebagai selesai.

10. Kesimpulan dan Langkah Selanjutnya dalam Pengembangan Laravel

Selamat! Kamu telah berhasil membuat Contoh Project Laravel Sederhana dengan Database MySQL: aplikasi To-Do List. Proyek ini adalah fondasi yang baik untuk memahami dasar-dasar Laravel dan interaksi dengan database MySQL.

Langkah selanjutnya, kamu bisa meningkatkan aplikasi ini dengan:

  • Menambahkan fitur otentikasi: Memungkinkan pengguna untuk membuat akun dan mengelola To-Do list mereka sendiri.
  • Menggunakan AJAX: Mengupdate data To-Do tanpa me-refresh halaman.
  • Menambahkan fitur pencarian: Memungkinkan pengguna untuk mencari To-Do berdasarkan judul atau deskripsi.
  • Menggunakan library CSS framework: Seperti Bootstrap atau Tailwind CSS untuk mempercantik tampilan aplikasi.
  • Menambahkan unit testing: Memastikan kode kamu berjalan dengan benar.

Dengan terus berlatih dan mengembangkan proyek-proyek kecil seperti ini, kamu akan semakin mahir dalam menggunakan Laravel dan MySQL. Jangan takut untuk mencoba hal-hal baru dan bereksperimen dengan fitur-fitur Laravel yang lain. Selamat belajar dan semoga sukses!

Tags: Contoh ProjectDatabaseFrameworkImplementasiLaravelMySQLphpprojectStudi KasusWeb Development
Luna Abernathy

Luna Abernathy

Related Posts

AI

Dokumentasi Laravel Bahasa Indonesia Terbaru: Referensi Lengkap untuk Developer

by Atticus Thorne
July 4, 2025
Database

Cara Menggunakan Eloquent ORM di Laravel: Database Jadi Lebih Mudah Dikelola

by venus
July 4, 2025
Development

Template Admin Dashboard Gratis untuk Laravel: Hemat Waktu dan Biaya!

by Luna Abernathy
July 4, 2025
Next Post

Cara Membuat API RESTful dengan Laravel Passport: Panduan Lengkap Authentication

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recommended

Hosting Cloud Server Indonesia Terpercaya: Performa Tinggi & Skalabilitas

March 23, 2025

AI: Etika Penggunaan AI dalam Penulisan Konten: Panduan Lengkap

April 10, 2025

Cara Menggunakan AI untuk Meningkatkan Produktivitas Kerja: Lebih Cerdas, Lebih Cepat

March 18, 2025

Tool AI Gratis untuk Membuat Konten Website: Konten Berkualitas Tanpa Batas

March 19, 2025

Kursus AI Online Bersertifikat untuk Pemula Indonesia: Kuasai Teknologi Masa Depan!

July 5, 2025

Tools AI untuk Riset Keyword Bahasa Indonesia: SEO Lebih Optimal dengan AI!

July 5, 2025

Website AI Gratis untuk Membuat Logo Bisnis: Logo Profesional dalam Hitungan Menit!

July 5, 2025

Cara Menggunakan AI untuk Membuat Konten Artikel Bahasa Indonesia: Hemat Waktu & Ide

July 5, 2025

Gameglimmer

Our media platform offers reliable news and insightful articles. Stay informed with our comprehensive coverage and in-depth analysis on various topics.
Read more »

Recent Posts

  • Kursus AI Online Bersertifikat untuk Pemula Indonesia: Kuasai Teknologi Masa Depan!
  • Tools AI untuk Riset Keyword Bahasa Indonesia: SEO Lebih Optimal dengan AI!
  • Website AI Gratis untuk Membuat Logo Bisnis: Logo Profesional dalam Hitungan Menit!

Categories

  • AI
  • Akurasi
  • Analisis
  • Android
  • Animasi
  • API
  • Aplikasi
  • Bahasa
  • Bandwidth
  • based on the article title "Cara Menggunakan AI untuk Meningkatkan Produktivitas Kerja: Lebih Cerdas
  • Based on the article title "Cara Mengintegrasikan Laravel dengan Database MySQL: Panduan Lengkap"
  • Biaya
  • Bisnis
  • Blog
  • Branding
  • Cerdas
  • Cloud
  • Community
  • CRM
  • CSS
  • Customer
  • Data
  • Database
  • Deployment
  • Desain
  • Development
  • Domain
  • Download
  • E-commerce
  • Editing
  • Efektif
  • Efisien
  • Efisiensi
  • Email
  • Error
  • Error generating categories
  • Estimasi
  • Fitur
  • Foto
  • Framework
  • Freelance
  • Garansi
  • Gratis
  • Harga
  • Hemat
  • Here are 5 categories
  • here are 5 categories: Laravel
  • Here's a categorization based on the article titles and provided keywords: **Development
  • Here's a categorization based on the article titles and provided keywords: **Online
  • Here's a categorization based on the article titles and provided keywords: **Panduan
  • Here's a categorization based on the article titles and provided keywords: **Penjualan
  • Here's a categorization based on the article titles and provided keywords: **Server
  • Here's a categorization based on the article titles and provided keywords: **Web Development
  • Here's a categorization based on the article titles and provided keywords: **Website
  • Here's a categorization based on the article titles and provided keywords: CRM
  • Here's a categorization based on the article titles and provided keywords: E-commerce
  • Here's a categorization based on the article titles and provided keywords: Hosting
  • Here's a categorization based on the article titles and provided keywords: Pendidikan
  • Here's a possible categorization based on the article titles and provided keywords: Laravel
  • Here's a possible categorization based on the article titles and provided keywords: Produktivitas
  • Hosting
  • Hukum
  • Ide
  • Indonesia
  • Inspirasi
  • Integrasi
  • iOS
  • Jakarta
  • JavaScript
  • Karir
  • Keamanan
  • Kecepatan
  • Kerja
  • Kesehatan
  • Kolaborasi
  • Konten
  • Laravel
  • Layanan
  • Lebih Cepat": AI
  • Library
  • Lokal
  • Machine Learning
  • Marketing
  • Mobile
  • Murah
  • MySQL
  • one word per category
  • Online
  • Optimasi
  • Otentikasi
  • Otomatisasi
  • Panduan
  • Pelanggan
  • Pelaporan
  • Pelatihan
  • Pemasaran
  • Pembayaran
  • Pemula
  • Pendidikan
  • Pengembangan
  • Penjualan
  • Perbandingan
  • Performance
  • Pertumbuhan
  • PHP
  • Pilihan
  • Portfolio
  • Prima
  • Privasi
  • Produktifitas
  • Produktivitas
  • Profesional
  • Python
  • Rekomendasi
  • Responsif
  • Review
  • SEO
  • Server
  • Sistem
  • Skalabilitas
  • Software
  • Solusi
  • SSL
  • Startup
  • Strategi
  • Streaming
  • Sukses
  • Support
  • Teknologi
  • Template
  • TensorFlow
  • Terbaik
  • Terpercaya
  • Tips
  • Tools
  • Transfer
  • Tutorial
  • UKM
  • UMKM
  • Unlimited
  • Uptime
  • VPS
  • Web Development
  • Website
  • Windows
  • WooCommerce
  • WordPress
  • XAMPP

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 Gameglimmer.

No Result
View All Result
  • AI
  • Produktivitas
  • Website
  • Hosting
  • Laravel
  • Database

© 2024 Gameglimmer.