Koneksi Database & Relasi Data - Perwira Learning Center

Latar Belakang

Sebagai lanjutan dari pembahasan mengenai routing dan controller, tahap berikutnya adalah mempelajari database dan migration dalam Laravel. Dalam pengembangan aplikasi, database berperan sebagai tempat penyimpanan data yang akan dikelola oleh sistem. Oleh karena itu, integrasi antara Laravel dan database menjadi langkah penting agar aplikasi dapat berjalan secara dinamis dan terhubung dengan data.
Artikel ini dibuat dengan tujuan untuk mendokumentasikan hasil pembelajaran saya mengenai konfigurasi database serta penggunaan migration di Laravel. Dengan memahami kedua hal ini, saya dapat membangun struktur tabel secara terorganisir dan mengelola perubahan struktur database dengan lebih sistematis.

Alat dan Bahan

Alat dan bahan yang digunakan yaitu sebagai berikut:

A. Perangkat Lunak

  1. Database (Mysql)
  2. Web Browser (Google Chrome)
  3. Web Server (Xampp)
  4. Code Editor (Visual Studio Code)
  5. Terminal

B. Perangkat Keras

  1. Laptop

Konfigurasi Koneksi Database

Menyiapkan Database

Sebelum melangkah ke konfigurasi koneksi, kita perlu menyiapkan atau membuat terlebih dahulu database yang hendak kita gunakan. Laravel mendukung beberapa jenis database, diantaranya MySQL, PosgreSQL, SQlite, dll. Disini saya menggunakan MySQL dan membuat database melalui MySQL di terminal, dengan perintah sebagai berikut:

CREATE DATABASE belajar_laravel;

Konfigurasi Koneksi

Sebelum bisa menggunakan database, kita harus menghubungkan Laravel dengan database server yang kita gunakan. Laravel membuat proses ini sangat mudah melalui file .env. Buka file .env di root project Laravel kamu, lalu cari bagian konfigurasi database. Akan terlihat seperti ini:

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

Penjelasannya:
  • DB_CONNECTION: Jenis database yang digunakan. Paling umum mysql, tapi Laravel juga mendukung pgsqlsqlite, dan lainnya.
  • DB_HOST: Alamat server database. 127.0.0.1 atau localhost berarti database ada di komputer lokal.
  • DB_PORT: Port yang digunakan database. MySQL default di port 3306.
  • DB_DATABASE: Nama database yang akan kita gunakan. Pastikan database ini sudah dibuat di phpMyAdmin atau melalui terminal.
  • DB_USERNAME: Username untuk mengakses database. Di XAMPP/LAMP biasanya root.
  • DB_PASSWORD: Password database. Di XAMPP/LAMP biasanya kosong.

Mengecek Koneksi Database

Setelah mengatur konfigurasi, kita bisa mengecek apakah koneksi berhasil dengan perintah Artisan:

php artisan db:show

Jika koneksi berhasil, akan muncul informasi detail database. Jika gagal, pastikan settingan .env sudah benar dan database server (Apache/MySQL) sedang berjalan.

Pengertian Migration

Migration adalah fitur Laravel yang bertindak seperti version control untuk database. Dengan migration, kita bisa membuat dan mengubah skema database menggunakan kode PHP, bukan melalui SQL manual.

Kenapa Lebih Baik Menggunakan Migration?

Bayangkan kita bekerja dalam tim. Developer A membuat tabel users di komputernya, Developer B membuat tabel products. Ketika mereka menggabungkan kode, bagaimana cara menyinkronkan struktur database? Dengan migration, semua perubahan database terdokumentasi dalam kode dan bisa dijalankan oleh siapa pun.

Tujuan Migration:

  1. Version control untuk database - Semua perubahan tercatat

  2. Kemudahan kolaborasi - Tim bisa sinkron struktur database

  3. Rollback - Bisa kembali ke versi sebelumnya jika error

  4. Testing jadi lebih mudah - Buat dan hapus database dengan cepat

  5. Deployment otomatis - Struktur database bisa diatur saat deploy

Membuat Migration

Untuk membuat file migration baru, kita gunakan perintah Artisan:

php artisan make:migration create_products_table

Perintah ini akan membuat file migration baru di direktori database/migrations/ dengan format timestamp seperti 2024_01_20_123456_create_products_table.php.

Struktur File Migration

Buka file migration yang baru dibuat. Isinya akan seperti ini:
Fungsi Method up() dan down()
  • up(): Berisi kode untuk menjalankan migration (biasanya membuat atau mengubah tabel). Method ini akan dieksekusi saat kita menjalankan php artisan migrate.

  • down(): Berisi kode untuk membatalkan perubahan (rollback). Method ini akan dieksekusi saat kita menjalankan php artisan migrate:rollback.

Praktik Membuat Tabel Products

Sekarang kita akan mempraktikkan membuat tabel products dengan beberapa kolom. Modifikasi method up() menjadi seperti ini:
Penjelasan Setiap Kolom:
  • $table->id(): Membuat kolom id sebagai primary key, auto increment, tipe big integer. Ini adalah cara praktis Laravel untuk membuat primary key.

  • $table->string('name', 200): Membuat kolom name dengan tipe VARCHAR(200).

  • $table->text('description')->nullable(): Membuat kolom description tipe TEXT yang boleh kosong (nullable).

  • $table->integer('price'): Membuat kolom price dengan tipe INTEGER.

  • $table->integer('stock')->default(0): Membuat kolom stock dengan nilai default 0.

  • $table->timestamps(): Membuat dua kolom: created_at dan updated_at yang akan diisi otomatis oleh Laravel.

Menjalankan Migration

Setelah selesai menulis kode migration, saatnya menjalankannya:

php artisan migrate

Perintah ini akan mengeksekusi semua migration yang belum pernah dijalankan. Laravel menyimpan catatan migration yang sudah dijalankan di tabel migrations.
Cek di phpMyAdmin atau tool database lainnya, kamu akan melihat tabel products sudah terbentuk dengan struktur yang kita definisikan.

Rollback Migration

Kadang kita perlu membatalkan migration yang sudah dijalankan. Misalnya karena ada kesalahan struktur atau ingin mengubah desain tabel. Perintah ini akan membatalkan migration terakhir yang dijalankan:

php artisan migrate:rollback

Perintah ini akan mengeksekusi method down() dari migration yang terakhir dijalankan.

Hasilnya ketika rollback dijalankan maka migrate sebelumnya mengenai table products sudah terhapus.

Relasi Antar Tabel

Dalam aplikasi nyata, tabel-tabel biasanya saling berhubungan. Misalnya, satu kategori bisa memiliki banyak produk (one-to-many).

Buat Migration Categories

php artisan make:migration create_categories_table

Modifikasi file migration:

Menambah Foreign Key

Kita perlu menambahkan kolom category_id di tabel products.
Modifikasi tabel products:
Penjelasan Relasi
  • foreignId('category_id'): Membuat kolom category_id dengan tipe unsigned big integer (cocok untuk foreign key).
  • constrained(): Secara otomatis membuat foreign key yang merujuk ke kolom id di tabel categories.
  • onDelete('cascade'): Jika kategori dihapus, semua produk dalam kategori tersebut juga ikut terhapus.

Hasil Pembelajaran

Melalui pembelajaran ini, saya memahami bahwa sebelum menggunakan database di Laravel, perlu dilakukan konfigurasi koneksi pada file .env, seperti pengaturan nama database, username, dan password. Setelah koneksi berhasil, Laravel dapat terhubung dengan database yang digunakan.
Saya juga mempelajari bahwa migration berfungsi sebagai alat untuk membuat dan mengelola struktur tabel menggunakan kode. Dengan migration, pembuatan tabel, penambahan kolom, maupun perubahan struktur dapat dilakukan melalui perintah artisan tanpa harus menulis query SQL secara langsung. Hal ini mempermudah pengelolaan database serta menjaga konsistensi struktur ketika proyek dikembangkan atau dipindahkan ke lingkungan lain.

Kesimpulan

Database dan migration merupakan komponen penting dalam pengembangan aplikasi menggunakan Laravel. Konfigurasi database memungkinkan aplikasi terhubung dengan sistem penyimpanan data, sedangkan migration membantu dalam mengatur dan memelihara struktur tabel secara terorganisir.
Dengan memahami penggunaan database dan migration, saya memiliki dasar yang kuat untuk mengelola data secara sistematis serta mendukung pengembangan fitur aplikasi yang lebih kompleks di tahap selanjutnya.

Daftar Pustaka

Laravel. (n.d.). Database: Getting started. Diakses pada 26 Februari 2026, dari https://laravel.com/docs/database

Laravel. (n.d.). Database migrations. Diakses pada 26 Februari 2026, dari https://laravel.com/docs/migrations

MySQL. (n.d.). MySQL 8.0 reference manual. Diakses pada 26 Februari 2026, dari https://dev.mysql.com/doc/

Apache Friends. (n.d.). XAMPP for Windows. Diakses pada 26 Februari 2026, dari https://www.apachefriends.org/

Niagahoster. (2023). Pengertian Laravel dan kelebihannya untuk pengembangan website. Diakses pada 26 Februari 2026, dari https://www.niagahoster.co.id/blog/laravel-adalah/

Petani Kode. (2022). Tutorial Laravel untuk pemula. Diakses pada 26 Februari 2026, dari https://www.petanikode.com/laravel/

Codepolitan. (2022). Belajar Laravel dasar untuk pemula. Diakses pada 26 Februari 2026, dari https://www.codepolitan.com/

IndoKoding. (2023). Tutorial Laravel 10 – Part 6: Database & migration. Diakses pada 26 Februari 2026, dari https://indokoding.net/blog/tutorial-laravel-10-part-6-database-migration-L8wd7INHwWYh