Artisan — CLI Laravel
Hampir semua file Laravel dibuat lewat Artisan, bukan diketik dari nol. Menghafal segelintir perintahnya menghemat lebih banyak waktu daripada menghafal API apa pun.
Intisari
php artisan listmenampilkan semuanya;php artisan help <perintah>menjelaskan satu.make:*membuat file di tempat yang benar dengan namespace yang benar — jangan buat manual.php artisan tinkeradalah REPL yang sudah memuat seluruh aplikasimu, termasuk koneksi database.- Perintah destruktif menolak berjalan saat
APP_ENV=productionkecuali diberi--force. - Perintah buatan sendiri tinggal ditaruh di
app/Console/Commands/— langsung terdaftar tanpa registrasi.
Yang dipakai setiap hari
php artisan list # semua perintah, dikelompokkan
php artisan route:list # semua rute — diagnostik nomor satu untuk 404
php artisan about # ringkasan lingkungan aplikasi
php artisan tinker # REPL dengan aplikasi termuat penuh
php artisan migrate # jalankan migrasi
php artisan queue:work # proses antrean
php artisan optimize # cache config + rute + view (untuk deploy)
Generator: satu perintah, banyak file
| Perintah | Menghasilkan |
|---|---|
make:model Produk -mfsc | Model + migrasi + factory + seeder + controller |
make:controller ProdukController --resource | Controller berisi 7 method CRUD standar |
make:request SimpanProdukRequest | Kelas validasi + otorisasi untuk satu permintaan |
make:migration tambah_stok_ke_produk | Migrasi bernomor waktu |
make:job KirimInvoice | Job antrean |
make:policy ProdukPolicy --model=Produk | Aturan otorisasi per model |
make:test ProdukTest | Berkas tes |
-mfsc layak dihafal. Kependekan dari --migration --factory --seed --controller.
Satu perintah menyiapkan seluruh perangkat sebuah entitas baru, dengan penamaan dan namespace yang sudah benar.
Menyalin file lama lalu mengedit namanya adalah cara paling umum menghasilkan kelas yang tidak bisa ditemukan
autoload.
Tinker: REPL dengan aplikasi hidup di dalamnya
php artisan tinker
>>> User::count()
=> 42
>>> User::where('email', 'like', '%@gmail.com')->pluck('name')
>>> $u = User::factory()->create(); // bikin data uji seketika
>>> config('queue.default')
=> "redis"
>>> Str::slug('Judul Artikel Saya')
=> "judul-artikel-saya"
Tinker memuat container, konfigurasi, dan koneksi database — jadi apa pun yang bisa dilakukan kodemu, bisa kamu coba di sini lebih dulu. Untuk satu baris tanpa masuk sesi interaktif:
php artisan tinker --execute="dd(User::count())"
Hati-hati di produksi. Tinker adalah shell dengan hak penuh atas database. Ia berguna saat insiden, tapi apa pun yang kamu ketik di sana tidak tercatat di mana-mana dan tidak bisa di-review. Perbaikan data sebaiknya berbentuk perintah Artisan yang ikut ke git.
Menulis perintah sendiri
// app/Console/Commands/BersihkanKeranjang.php
class BersihkanKeranjang extends Command
{
protected $signature = 'keranjang:bersihkan
{--hari=7 : Umur keranjang yang dianggap basi}';
protected $description = 'Hapus keranjang yang tidak disentuh sekian hari';
public function handle(): int
{
$hari = (int) $this->option('hari');
$jumlah = Keranjang::where('updated_at', '<', now()->subDays($hari))->delete();
$this->info("{$jumlah} keranjang dibersihkan.");
return self::SUCCESS; // kode keluar — dibaca CI dan penjadwal
}
}
php artisan keranjang:bersihkan --hari=30
Nilai kembalian handle() menjadi exit code proses. Ini penting begitu perintahnya dijalankan
oleh penjadwal atau oleh ECS: SUCCESS berarti 0, dan apa pun selain 0 akan dianggap kegagalan yang
memicu alarm.
Pengaman produksi
# di APP_ENV=production, ini akan bertanya dulu
php artisan migrate:fresh
# di dalam pipeline yang tidak ada manusianya, konfirmasinya dilewati:
php artisan migrate --force
--force itu pisau bermata dua. Ia wajib ada di pipeline deploy (tidak ada yang bisa
menjawab prompt), tapi jangan pernah dipasangkan dengan migrate:fresh di skrip mana pun yang bisa
menyentuh produksi. fresh berarti drop semua tabel.
Latihan: jalankan php artisan make:model Produk -mfsc dan telusuri kelima file yang
dihasilkan. Lalu buat perintah toko:ringkasan yang mencetak jumlah produk dan jumlah pengguna,
jalankan, dan pastikan echo $? di shell-mu menghasilkan 0.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.