Apa itu Laravel Blueprint?
Tags: laravel, blueprint
Published: 2024-07-17 06:25:57

[Laravel Blueprint](https://blueprint.laravelshift.com) adalah package untuk Laravel yang memudahkan pembuatan komponen aplikasi seperti model, controller, dan migration menggunakan file definisi sederhana. Dengan Blueprint, Anda bisa mendefinisikan struktur aplikasi dalam format YAML dan menghasilkan kode yang diperlukan secara otomatis.

Kita akan coba latihan dengan studi kasus membuat toko sepatu.

Lakukan instalasi package dengan menjalankan perintah `composer require -W --dev laravel-shift/blueprint`. Kemudian jalankan perintah `php artisan blueprint:new`. Perintah tersebut akan menghasilkan sebuah file **draft.yaml**.

Buka file **draft.yaml** kemudian isi sebagai berikut.

```
models:
  Category:
    code: string unique
    name: string
    img: string
    relationships:
      hasMany: Shoe

  Shoe:
    code: string unique
    name: string
    description: text
    price: integer
    stock: integer
    img: string
    category_id: foreign

controllers:
  CategoryController:
    index:
      query: all
      render: category.index
    show:
      find: id
      render: category.show
    create:
      render: category.create
    store:
      validate: code, name, img
      save: category
      redirect: category.index
    edit:
      find: id
      render: category.edit
    update:
      find: id
      validate: code, name, img
      update: category
      redirect: category.show
    destroy:
      find: id
      delete: category
      redirect: category.index

  ShoeController:
    index:
      query: all
      render: shoe.index
    show:
      find: id
      render: shoe.show
    create:
      render: shoe.create
    store:
      validate: code, name, description, price, stock, img
      save: shoe
      redirect: shoe.index
    edit:
      find: id
      render: shoe.edit
    update:
      find: id
      validate: code, name, description, price, stock, img
      update: shoe
      redirect: shoe.show
    destroy:
      find: id
      delete: shoe
      redirect: shoe.index
```

Penjelasan dari kode tersebut:
- Category dan Shoe adalah nama model.
- code, name, dan img adalah kolom-kolom tabel categories.
- relationships hasMany menandakan bahwa tabel categories memiliki relasi one to many ke tabel shoes.
- code, name, description, price, stock dan img adalah kolom-kolom tabel shoes.
- category_id merupakan foreign key ke tabel categories.
- CategoryController dan ShoeController adalah nama controller.
- index, show, create, store, edit, update, destroy adalah metode-metode di controller.
- query: all berarti metode index akan mengambil semua entri di tabel.
- find: id berarti metode akan mencari entri berdasarkan ID.
- validate akan memvalidasi input.
- save, update, delete melakukan operasi pada model.
- render mengarahkan ke view tertentu.
- redirect mengarahkan ke route tertentu setelah operasi selesai.

Jika sudah selesai, jalankan perintah `php artisan blueprint:build`. Perintah ini akan menghasilkan:
- Model Category dan Shoe.
- Migration untuk membuat tabel categories dan shoes dengan kolom yang telah didefinisikan.
- Factory dan Seeder.
- Controller CategoryController dan ShoeController

Bagaimana jika kita memiliki perubahan pada file **draft.yaml**? Jalankan terlebih dahulu perintah `php artisan blueprint:erase`, perintah ini akan menghapus semua file yang sudah dibuat tadi. Kemudian jalankan kembali perintah `php artisan blueprint:build`.

Dengan menggunakan Laravel Blueprint, Anda bisa dengan cepat mendefinisikan dan menghasilkan struktur dasar aplikasi Anda tanpa menulis kode secara manual. Laravel Blueprint sangat berguna untuk mempercepat proses pengembangan awal dan menjaga konsistensi dalam kode yang dihasilkan.