CRUD Laravel : Car Data with Merk Relationship

CRUD Laravel : Car Data with Merk Relationship
CRUD Laravel : Car Data with Merk Relationship
Table of Contents

Tutorial ini akan membahas langkah demi langkah , mulai dari setup lingkungan pengembangan hingga membuat fitur lengkap untuk aplikasi Anda

 

Pada artikel ini, kita akan membahas Laravel CRUD Car Data, yaitu bagaimana mengelola data mobil dengan relasi ke tabel merk menggunakan framework Laravel. Proyek ini mencakup fitur Create, Read, Update, dan Delete serta implementasi relasi one-to-many antara mobil dan mer

Laravel saat ini menjadi salah satu framework PHP yang paling populer di kalangan web developer, terutama di Indonesia. Dengan fitur-fitur modern seperti routing yang simpel, ORM (Eloquent) yang powerful, dan ekosistem yang luas, tidak heran jika banyak orang ingin langsung lompat belajar Laravel untuk membangun web yang canggih dan profesional.

Tapi tunggu dulu. Sebelum kamu terlalu jauh menyelami Laravel, ada satu hal penting yang sering diabaikan oleh pemula: penguasaan dasar PHP. Laravel memang memudahkan banyak hal, tapi di balik kemudahannya itu, Laravel tetaplah framework yang dibangun dengan PHP. Artinya, jika kamu belum benar-benar memahami konsep dasar seperti variabel, array, loop, function, OOP (Object-Oriented Programming), dan lain-lain dalam PHP, kamu akan cepat merasa bingung atau bahkan stuck saat menggunakan Laravel.

Aku sendiri mengalami hal ini ketika pertama kali belajar Laravel. Tanpa bekal PHP yang cukup, banyak istilah dan fungsi yang terasa seperti “sulap”. Tapi setelah aku balik lagi ke dasar dan belajar PHP lebih dalam, segalanya mulai masuk akal kamu bisa belajar ke sini.

Di artikel ini, aku akan berbagi kenapa penting banget memahami PHP dulu sebelum lanjut ke Laravel, serta apa saja materi PHP yang wajib kamu kuasai. Yuk, kita mulai dari dasar agar langkahmu ke Laravel jadi lebih kuat dan terarah!

Siap! Berikut adalah versi panjang dan mengalir dari bagian yang kamu maksud, cocok untuk diletakkan setelah paragraf pembuka blog-mu:


Sebelum Mulai, Siapkan Dulu Alat Tempurnya

Sebelum kamu benar-benar masuk ke dunia Laravel, ada beberapa tools penting yang wajib kamu siapkan terlebih dahulu. Jangan langsung buru-buru belajar Laravel kalau belum meng-install tools ini, karena semuanya akan kamu butuhkan untuk menjalankan proyek Laravel dengan lancar.

1. PHP Versi 8 atau Lebih Baru

Laravel versi terbaru membutuhkan PHP minimal versi 8.2. Jadi, pastikan kamu sudah meng-install PHP dengan versi yang sesuai. Kamu bisa cek versi PHP yang terpasang di komputermu dengan menjalankan perintah berikut di terminal atau command prompt:

Jika versinya masih di bawah 8, sebaiknya upgrade dulu agar nanti tidak ada error atau kendala saat install Laravel.

2. Composer

Composer adalah dependency manager untuk PHP, semacam “pengatur paket” yang akan kamu gunakan untuk meng-install Laravel dan semua library yang dibutuhkannya. Tanpa Composer, kamu nggak bisa install Laravel dengan cara resmi. Composer juga akan banyak kamu gunakan saat mengembangkan aplikasi Laravel.

Kamu bisa download Composer langsung dari situs resminya: https://getcomposer.org

Setelah terinstall, kamu bisa cek apakah Composer sudah aktif dengan perintah:


3. Node.js dan NPM

Kenapa Laravel butuh Node.js? Karena Laravel (khususnya fitur frontend seperti Vite, Livewire, atau saat pakai Tailwind CSS) memanfaatkan tools modern frontend yang berjalan di atas Node.js. Jadi, pastikan kamu sudah meng-install Node.js beserta npm (Node Package Manager).

Kamu bisa download dari: https://nodejs.org

Setelah terpasang, cek versinya:

 



Kalau tools di atas sudah siap, kamu tinggal install Laravel dan mulai ngoding! Tapi ingat, sebelum langsung membuat project Laravel, pastikan kamu sudah nyaman dengan sintaks dan logika dasar PHP dulu, biar perjalanan belajarmu jadi lebih mulus. Kamu bisa klik ini

 

 


🧰 STEP 1 — Install Laravel

Setelah kamu memastikan PHP, Composer, dan Node.js sudah terinstall dengan benar di komputermu, sekarang saatnya kita masuk ke langkah inti: meng-install Laravel.

Laravel bisa kamu install dengan berbagai cara, tapi salah satu yang paling direkomendasikan dan mudah adalah menggunakan perintah composer create-project.

📦 Jalankan Perintah Ini di Terminal atau CMD:

Penjelasan:

  • composer create-project: Ini adalah perintah untuk membuat project baru dengan Composer berdasarkan paket tertentu.
  • laravel/laravel: Ini adalah paket resmi dari Laravel, berisi struktur dasar dan semua dependensi Laravel.

  • car_laravel: Ini adalah nama folder/proyek kamu. Kamu bisa ganti dengan nama lain sesuai proyekmu, misalnya web_sekolah, toko_online, dll.

Setelah menjalankan perintah ini, Composer akan mengunduh semua file Laravel dan menyimpannya di folder car_laravel.

📁 Pindah ke Folder Proyek:

Perintah ini digunakan untuk masuk ke direktori proyek Laravel yang baru saja dibuat. Setelah berada di dalam folder tersebut, kamu bisa mulai menjalankan perintah-perintah Laravel lainnya, seperti menjalankan server lokal, membuat model, controller, dan sebagainya.

Proses install ini membutuhkan koneksi internet karena Composer akan mendownload berbagai dependensi Laravel dari repositori resmi. Jadi pastikan koneksi kamu stabil saat menjalankan perintah ini.


⚙️ STEP 2 — Configure .env and Database

  1. Setelah project Laravel berhasil dibuat, langsung aja kita sambungkan ke database.

    📝 Edit File .env

    Buka file .env yang ada di folder project Laravel kamu, lalu temukan bagian pengaturan database dan ubah jadi seperti ini:

Pastikan kamu sudah nggak punya database laravel_car1 di MySQL (pakai phpMyAdmin atau terminal),.

2. Run the migration di cmd/terminal kalian:

Setelah mengatur koneksi database di file .env, sekarang kita jalankan perintah migration untuk membuat tabel-tabel default di database.

Buka terminal atau CMD kamu (pastikan posisinya sudah di dalam folder project Laravel), lalu ketik perintah berikut:

Penjelasan singkat:

  • Perintah ini akan mengeksekusi semua file migration yang ada di folder database/migrations.

  • Secara default, Laravel akan membuat beberapa tabel penting, seperti:

    • users — untuk menyimpan data user

    • password_resets — untuk fitur reset password

    • failed_jobs — untuk mencatat job yang gagal

    • personal_access_tokens — untuk autentikasi API

Setelah berhasil dijalankan, kamu bisa cek ke phpMyAdmin atau database tool lainnya — tabel-tabel tersebut akan muncul secara otomatis di database yang kamu buat tadi.

Kalau muncul error saat migrate, pastikan koneksi database sudah benar dan database yang kamu tulis di .env memang sudah dibuat.


🏗️ STEP 3 — Create Model and Migration

Setelah berhasil melakukan migrate awal, sekarang saatnya kita membuat Model dan Migration khusus untuk data yang kita butuhkan di proyek ini. Dalam studi kasus ini, kita akan membuat dua entitas utama: Merk dan Car.

Penjelasan:

  • php artisan make:model Merk -m
    Perintah ini akan:

    • Membuat file model Merk.php di folder app/Models/

    • Membuat file migration create_merks_table.php di folder database/migrations/

  • php artisan make:model Car -m
    Sama seperti di atas, perintah ini akan:

    • Membuat file model Car.php

    • Dan migration untuk tabel cars

Flag -m di sini artinya sekalian buat file migration-nya. Jadi kita tidak perlu buat secara terpisah, lebih efisien



🛠️ Edit File Migration create_merks_table.php

Setelah menjalankan perintah:

Laravel akan otomatis membuat file migration untuk tabel merks di folder:

Buka file tersebut (namanya biasanya diawali dengan xxxx_xx_xx_create_merks_table.php), lalu ubah method up() jadi seperti ini:

 


🧾 Penjelasan Struktur Tabel:

  • $table->id();
    Membuat kolom id (auto increment) sebagai primary key.

  • $table->string('name');
    Untuk menyimpan nama merk mobil, misalnya: Toyota, Honda, Suzuki, dll.

  • $table->timestamps();
    Menambahkan dua kolom otomatis:

    • created_at → waktu data dibuat

    • updated_at → waktu data terakhir diperbaru

Edit create_cars_table.php

Setelah kamu menjalankan:


Laravel akan membuat file migration untuk tabel cars. Sekarang buka file migration tersebut (biasanya diawali dengan nama seperti xxxx_xx_xx_create_cars_table.php), lalu ubah isi method up() menjadi seperti ini:

 

📚 Penjelasan Kolom:

  • $table->id();
    Primary key untuk tabel cars.

  • $table->foreignId('merk_id')->constrained('merks')->onDelete('cascade');
    Membuat relasi ke tabel merks. Jadi satu mobil akan terhubung dengan satu merk.
    onDelete('cascade') artinya: kalau sebuah merk dihapus, maka semua mobil dengan merk itu juga ikut terhapus.

  • $table->string('model');
    Nama model mobil, seperti “Civic”, “Avanza”, dll.

  • $table->string('color');
    Warna mobil.

  • $table->integer('year');
    Tahun produksi.

  • $table->decimal('price', 15, 2);
    Harga mobil dengan format desimal. Maksimal 15 digit dan 2 digit di belakang koma.

  • $table->string('image');
    Untuk menyimpan nama file gambar mobil (nanti bisa disimpan di folder storage).

  • $table->timestamps();
    Menambahkan kolom created_at dan updated_at.



Run the Migration Again In CMD:

Langkah selanjutnya:
Setelah file create_merks_table.php dan create_cars_table.php sudah diedit, jalankan ulang migration dengan perintah:

Penjelasan:

  • Perintah ini akan menjalankan migration baru yang belum pernah dijalankan tanpa menghapus tabel yang sudah ada.

  • Jika migration untuk tabel merks dan cars belum pernah dijalankan sebelumnya, maka tabel akan dibuat.

  • Jika tabel sudah ada dan kamu hanya mengubah migration, Laravel tidak akan otomatis memperbarui tabel yang sudah ada.
    Jadi kalau kamu ingin mengubah struktur tabel yang sudah ada, kamu perlu buat migration baru (migration alter) untuk perubahan terbaru

 

⚠️ Catatan Penting

  • Jangan langsung edit migration yang sudah pernah dijalankan dan berharap tabel ikut berubah otomatis, karena Laravel tidak menjalankan ulang migration yang sudah dijalankan.

  • Untuk perubahan struktur tabel setelah migration pertama, buat file migration baru dengan perintah:

Kalau kamu baru mulai dan belum ada data penting, migrate:fresh bisa jadi opsi cepat. Tapi kalau sudah ada data dan mau aman, cukup pakai php artisan migrate atau buat migration baru untuk perubahan.

Lalu isi file migration tersebut dengan perubahan yang ingin kamu lakukan.


🔁 STEP 4 — Define Relationships in Models

 

Setelah kamu membuat model Merk dan Car, sekarang waktunya untuk mendefinisikan relasi antar tabel di dalam model, supaya data bisa saling terhubung.


📄 Edit app/Models/Merk.php

app/Models/Merk.php

 

🔗 Penjelasan:

  • protected $fillable = ['name'];
    Artinya hanya kolom name yang bisa diisi secara massal (mass assignment), misalnya saat insert data.

  • public function cars()
    Fungsi ini mendefinisikan relasi one-to-many antara Merk dan Car.

  • $this->hasMany(Car::class);
    Menyatakan bahwa satu merk bisa memiliki banyak mobil.

 


app/Models/Car.php

🔗 Penjelasan:

  • protected $fillable = [...]
    Mendefinisikan field apa saja yang bisa diisi saat insert/update data.
    Ini penting untuk menghindari MassAssignmentException di Laravel.

  • public function merk()
    Fungsi ini mendefinisikan relasi many-to-one, yaitu:

    Setiap mobil (Car) hanya memiliki satu merk (Merk).

  • $this->belongsTo(Merk::class);
    Artinya field merk_id di tabel cars adalah foreign key yang merujuk ke tabel merks.



📦 STEP 5 — Create Controller

🛠️ Penjelasan:

  • php artisan make:controller
    Adalah perintah Artisan (CLI-nya Laravel) untuk membuat controller.

  • CarController
    Nama controller yang akan kita buat. Di Laravel, biasanya nama controller memakai akhiran Controller.

  • -r
    Singkatan dari --resource, yaitu opsi untuk secara otomatis membuat semua method dasar CRUD seperti:

    • index() → untuk menampilkan daftar data

    • create() → menampilkan form tambah data

    • store() → menyimpan data baru

    • show() → menampilkan detail data tertentu

    • edit() → menampilkan form edit

    • update() → menyimpan perubahan data

    • destroy() → menghapus data



app/Http/Controllers/CarController.php

 

🌐 STEP 6 — Routing

Edit routes/web.php

🔍 Penjelasan:

  • Route::get('/', ...)
    Ini adalah route untuk halaman utama (localhost:8000/) yang menampilkan view welcome.

  • Route::resource('/car', CarController::class);
    Ini adalah route otomatis (resource route) yang secara default menghasilkan 7 route berikut:

HTTP Method URI Action Route Name
GET /car index car.index
GET /car/create create car.create
POST /car store car.store
GET /car/{car} show car.show
GET /car/{car}/edit edit car.edit
PUT/PATCH /car/{car} update car.update
DELETE /car/{car} destroy car.destroy

Dengan satu baris Route::resource, kamu sudah dapat akses CRUD lengkap! Tinggal buat view dan isi method di CarController.



🖼️ STEP 7 — Create Views Folder

 

Agar aplikasi bisa menampilkan data ke pengguna, kita perlu membuat Blade View di Laravel. File view ini akan digunakan untuk menampilkan daftar mobil, form input, dan lain-lain.

✅ Struktur Blade View yang Akan Kita Buat:

✅ Struktur Blade View:

php artisan make:view nama-folder.nama-file

Create the folder car dengan nama file layout:

1. resources/views/layout/app.blade.php

 

Create the folder car dengan nama file index:

 

 



resources/views/car/index.blade.php

🆕 CREATE — Form Tambah Data Mobil

resources/views/car/create.blade.php

 

CarController

 

Jangan lupa nyalakan

Updatenya

Index.blade

Create.blade.php

 

 

Kita buatkan data dummy dulu


 

🧪 Jalan kan servernya

Untuk menjalan kan serve kamu bisa php artisan serve di sini kamu

🧪 Access in Browser


"Laravel CRUD App with Image Upload & One-to-Many Relationship (Car & Brand Example)"
“Laravel CRUD App with Image Upload & One-to-Many Relationship (Car & Brand Example)”

Kategori:

Tags: