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 relationship
atau bahkan sampai dengan membuat controller
nya.
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.
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.
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.