Muhammad Amirul Ihsan
Muhammad Amirul Ihsan Fullstack Developer, Content Creator, suka berbagi pengalaman / pengetahuan lewat tulisan maupun video di kawankoding.com

Laravel Blueprint Untuk Mempercepat Memulai Proyek Laravel

Senin, 3 Juni 2024
Laravel Blueprint Untuk Mempercepat Memulai Proyek Laravel

Kadang hal yang membuat kita lama dalam memulai proyek adalah bagian persiapannya, entah itu membuat tabel / migration, setup eloquent relationshipatau bahkan sampai dengan membuat controllernya.

Laravel Blueprint adalah solusi buat masalah kalian tersebut, merupakan package yang dikembangkan oleh Laravel Shift, Blueprint akan sangat membantu kita saat memulai proyek baru dengan Laravel.

Untuk melihat apa yang bisa dilakukan Laravel Blueprint, langsung saja kita instal.

Menginstal Laravel Blueprint

composer require -W --dev laravel-shift/blueprint

Selanjutnya kita inisialisasi blueprint

php artisan blueprint:init

Setelah dijalankan perintahnya, maka akan muncul satu file baru dengan nama draft.yaml , file ini yang akan kita gunakan untuk membuat draft dari aplikasi yang akan kita bangun.

Mendefinisikan Model

Seperti saya sebutkan sebelumnya untuk membuat draft aplikasi kita, kita akan definisikan pada file draft.yaml

Pada contoh kali ini saya ingin membuat sebuah blog dengan tabel posts dan comments dengan rancangan seperti berikut ini.

Diagaram

Setelah memiliki rancangan database yang akan kita buat, kita akan membuatnya dengan Laravel Blueprint. Buka file draft.yaml

models:
  Post:
    user_id: foreign
    title: string
    slug: string unique
    content: text
    thumbnail: string nullable
  Comment:
    user_id: foreign
    post_id: foreign
    message: text

Kurang lebih seperti ini untuk isi file draft.yaml yang akan kita buat, untuk mengetahui tipe data dan penulisannya bisa cek di dokumentasi Blueprint ini.

Generate Model & Migrations

Setelah mendefinisikan file draft.yaml kita bisa membuat Model, Migrations & Factory dengan perintah di bawah ini.

php artisan blueprint:build

Maka akan ada beberapa file yang terbuat setelah perintah dieksekusi.

blueprint-buld

Berikut isi dari beberapa file yang terbuat

  • Migration Post

    public function up(): void
    {
        Schema::disableForeignKeyConstraints();
    
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->foreignId('user_id')->constrained();
            $table->string('title');
            $table->string('slug')->unique();
            $table->text('content');
            $table->string('thumbnail')->nullable();
            $table->timestamps();
        });
    
        Schema::enableForeignKeyConstraints();
    }
    
  • Model Post

    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Database\Eloquent\Relations\BelongsTo;
    
    class Post extends Model
    {
        use HasFactory;
    
        /**
         * The attributes that are mass assignable.
         *
         * @var array
         */
        protected $fillable = [
            'user_id',
            'title',
            'slug',
            'content',
            'thumbnail',
        ];
    
        /**
         * The attributes that should be cast to native types.
         *
         * @var array
         */
        protected $casts = [
            'id' => 'integer',
            'user_id' => 'integer',
        ];
    
        public function user(): BelongsTo
        {
            return $this->belongsTo(User::class);
        }
    }
    
    

Untuk sisanya bisa kawan kawan cek sendiri ya. Terlihat pada file di atas migration sudah dibuat dengan baik, begitu juga dengan model yang sudah mendefinisikan $fillable juga beserta dengan relasi ke user.

Kalau sudah oke kalian bisa jalankan saja perintah php artisan migrate.

Menghapus File Blueprint

Dalam proses development tak luput kita melakukan kesalahan dalam menuliskan atau mendefinisikan sesuatu, jika itu terjadi ketika berhadapan dengan Blueprint, kita bisa jalankan perintah berikut.

php artisan blueprint:erase

Maka seluruh file yang sudah dibuat oleh Blueprint akan dihapus dan kalian bisa melakukan koreksi pada file draft.yaml.

Jika selesai dengan koreksinya, jalankan lagi perintah build.

php artisan blueprint:build

Kesimpulan

Blueprint adalah sebuah package yang sangat cocok dan memudahkan kita dalam memulai proyek dengan Laravel, membantu kita untuk membuat migration, model & factory, sebetulnya bisa juga membantu dalam membuat controller yang mungkin akan kita bahas di tulisan selanjutnya.

NB : tidak disarankan menggunakan Blueprint pada masa development, ditakutkan ada kesalahan dan membuat data hilang karena harus menjalankan perintah migrate:fresh atau yang lainnya.