Tutorial Membuat Blog dengan Laravel 11 dan Filament: Part 1 - Mengenal Struktur Folder dan Model
Epsiode:
Pendahuluan
Selamat datang di tutorial membuat blog dengan Laravel 11 dan Filament! Pada bagian pertama ini, kita akan berkenalan dengan struktur folder dasar Laravel dan konsep penting yaitu Model serta Migration. Pemahaman yang kuat tentang kedua konsep ini akan menjadi fondasi yang solid untuk membangun aplikasi blog kita.
Struktur Folder Laravel
Ketika kita membuat proyek Laravel baru, kita akan disuguhkan dengan struktur folder yang terorganisir dengan baik. Setiap folder memiliki peran spesifik dalam aplikasi kita. Beberapa folder utama yang perlu kita ketahui adalah:
- app: Berisi kode aplikasi utama, termasuk model, controller, request, dan lain-lain.
- config: Menyimpan konfigurasi aplikasi, seperti database, caching, dan routing.
- database: Berisi file migrasi dan seeders untuk mengatur struktur database.
- public: Folder yang diakses secara publik oleh web server.
- routes: Mendefinisikan rute untuk aplikasi.
- storage: Menyimpan file yang diunggah, log, dan cache.
- resources: Berisi view, bahasa, dan assets (CSS, JavaScript).
MVC Laravel
Laravel menggunakan konsep MVC untuk mengatur aplikasi. Bayangkan sebuah restoran:
- Model adalah dapur, tempat makanan (data) disiapkan.
- View adalah ruang makan, tempat pelanggan (pengguna) melihat dan menikmati makanan.
- Controller adalah pelayan, yang menerima pesanan dari pelanggan, menyampaikannya ke dapur, dan membawa makanan ke meja pelanggan.
Pentingnya ERD
Sebelum membuat model dan migration, sebaiknya kita membuat Entity Relationship Diagram (ERD) terlebih dahulu. ERD akan memberikan gambaran yang jelas tentang struktur database kita, termasuk tabel, kolom, dan hubungan antar tabel.
Contoh ERD Sederhana untuk Blog:
Dengan memiliki ERD, kita dapat dengan mudah menentukan model dan migration yang diperlukan.
Model: Representasi Data
Model dalam Laravel adalah representasi dari tabel dalam database. Setiap model memiliki atribut yang sesuai dengan kolom dalam tabel dan metode untuk berinteraksi dengan data.
Mengapa Model Penting?
- Abstraksi: Model menyembunyikan kompleksitas interaksi dengan database, sehingga kita bisa fokus pada logika bisnis.
- Validasi: Model dapat digunakan untuk memvalidasi data sebelum disimpan ke database.
- Relationship: Model memungkinkan kita mendefinisikan hubungan antara tabel (misalnya, one-to-one, one-to-many, many-to-many).
Contoh Model Post:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use HasFactory, SoftDeletes;
protected $fillable = [
"title",
"slug",
"body",
"author_id",
"category_id",
"status",
"thumbnail",
];
public function author(): BelongsTo
{
return $this->belongsTo(User::class, 'author_id');
}
public function category(): BelongsTo
{
return $this->belongsTo(Category::class);
}
}
Migration: Mengelola Struktur Database
Migration adalah cara untuk mengatur perubahan pada struktur database secara terkendali. Setiap perubahan pada database akan direkam dalam sebuah file migration.
Mengapa Migration Penting?
- Version Control: Perubahan database dapat dilacak dan diulang.
- Kolaborasi: Beberapa developer dapat bekerja sama dalam mengembangkan database.
- Deployment: Migration memudahkan deployment aplikasi ke lingkungan yang berbeda.
Contoh Migration Membuat Tabel Posts:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('slug');
$table->longText('body');
$table->foreignId('author_id')->constrained('users')->onDelete('cascade'); // Relasi ke tabel users
$table->foreignId('category_id')->constrained('categories')->onDelete('set null'); // Relasi ke tabel categories
$table->enum('status', ['draft', 'published'])->default('draft');
$table->string('thumbnail')->nullable();
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('posts');
}
};
Kesimpulan
Pada bagian pertama ini, kita telah mempelajari dasar-dasar struktur folder Laravel, konsep Model dan Migration, serta pentingnya ERD dalam perancangan database. Pada bagian selanjutnya, kita akan mulai membangun aplikasi blog kita dengan Laravel dan Filament.
Pertanyaan:
- Apakah Anda sudah memiliki ERD untuk blog yang ingin Anda buat?
- Apakah ada bagian yang ingin Anda tanyakan lebih lanjut?
Materi selanjutnya yang akan kita bahas:
- Membuat model dan migration berdasarkan ERD
- Membangun tampilan menggunakan Blade
- Menggunakan Filament untuk membuat admin panel
Mari kita lanjutkan perjalanan membangun blog dengan Laravel!
