Category: Laravel

  • Command Artisan di Laravel yang Paling Sering Dipakai

    Kalau Anda sudah cukup lama pakai Laravel, pasti sering jalankan perintah seperti php artisan migrate atau php artisan serve. Tapi banyak developer yang belum tahu ada puluhan command Artisan lain yang bisa menghemat banyak waktu.

    Artikel ini berisi daftar command Artisan yang paling sering dipakai dalam proyek Laravel sehari-hari, beserta kapan dan bagaimana menggunakannya.

    Apa Itu Artisan?

    Artisan adalah command-line interface (CLI) bawaan Laravel. Dengan Artisan, Anda bisa menjalankan berbagai tugas: generate file, jalankan migration, clear cache, hingga membuat custom command sendiri.

    Untuk lihat semua command yang tersedia:

    php artisan list

    Untuk bantuan command tertentu:

    php artisan help migrate

    Command untuk Generate File

    Ini yang paling sering dipakai saat awal development:

    # Buat controller
    php artisan make:controller ArticleController
    php artisan make:controller ArticleController --resource  # dengan CRUD methods
    php artisan make:controller ArticleController --api       # CRUD tanpa create/edit
    
    # Buat model (+ migration + factory + seeder sekaligus)
    php artisan make:model Article
    php artisan make:model Article -mfs  # migration + factory + seeder
    
    # Buat migration
    php artisan make:migration create_articles_table
    php artisan make:migration add_slug_to_articles_table
    
    # Buat seeder
    php artisan make:seeder ArticleSeeder
    
    # Buat Form Request
    php artisan make:request StoreArticleRequest
    
    # Buat middleware
    php artisan make:middleware EnsureEmailIsVerified
    
    # Buat service provider
    php artisan make:provider ReportServiceProvider

    Command Database

    Untuk mengelola migration dan seeder:

    # Jalankan migration baru
    php artisan migrate
    
    # Rollback migration terakhir
    php artisan migrate:rollback
    
    # Rollback semua, lalu migrate ulang
    php artisan migrate:fresh
    
    # Migrate + seed sekaligus
    php artisan migrate:fresh --seed
    
    # Lihat status semua migration
    php artisan migrate:status
    
    # Jalankan seeder
    php artisan db:seed
    php artisan db:seed --class=ArticleSeeder

    Perhatian: migrate:fresh akan menghapus semua tabel dan data. Jangan jalankan di production.

    Command Cache

    Sangat berguna setelah mengubah konfigurasi atau saat debugging:

    # Clear semua cache
    php artisan cache:clear
    
    # Clear config cache
    php artisan config:clear
    
    # Clear route cache
    php artisan route:clear
    
    # Clear view cache
    php artisan view:clear
    
    # Cache config (untuk production — mempercepat load)
    php artisan config:cache
    
    # Cache routes (untuk production)
    php artisan route:cache

    Kalau perubahan config atau route tidak terbaca, biasanya cukup jalankan dua command pertama.

    Command untuk Development Server

    # Jalankan development server
    php artisan serve
    
    # Jalankan di port tertentu
    php artisan serve --port=8080
    
    # Jalankan queue worker
    php artisan queue:work
    
    # Jalankan queue worker dengan restart otomatis saat ada perubahan kode
    php artisan queue:work --tries=3
    
    # Lihat list route
    php artisan route:list
    
    # Filter route berdasarkan nama
    php artisan route:list --name=article

    Command Tinker

    Tinker adalah REPL (interactive shell) untuk Laravel. Sangat berguna untuk coba query Eloquent atau test logika tanpa harus buat endpoint:

    php artisan tinker

    Di dalam Tinker:

    >>> AppModelsArticle::count()
    >>> AppModelsArticle::latest()->first()
    >>> AppModelsUser::factory()->create(['name' => 'Budi'])

    Command Maintenance Mode

    Kalau perlu deploy atau maintenance tanpa memutus koneksi database:

    # Aktifkan maintenance mode
    php artisan down
    
    # Aktifkan dengan pesan dan redirect
    php artisan down --message="Sedang maintenance" --retry=60
    
    # Aktifkan dengan bypass secret (Anda masih bisa akses site)
    php artisan down --secret="rahasia123"
    
    # Matikan maintenance mode
    php artisan up

    Command Berguna Lainnya

    # Generate app key (wajib setelah clone project)
    php artisan key:generate
    
    # Lihat semua event yang terdaftar
    php artisan event:list
    
    # Jalankan scheduler (biasanya di cron)
    php artisan schedule:run
    
    # Optimize semua (cache config + route + views)
    php artisan optimize
    
    # Clear semua cache (untuk development)
    php artisan optimize:clear

    Baca Juga

    Kalau Anda ingin tim yang bisa bantu bangun dan maintain aplikasi Laravel Anda, lihat layanan pengembangan aplikasi kami.

  • Membuat Controller di Laravel 12: Resource, API, dan Best Practice

    Membuat Controller di Laravel 12: Resource, API, dan Best Practice

    Controller adalah salah satu komponen paling sering ditulis di Laravel. Hampir setiap fitur butuh controller: dari menampilkan halaman, menyimpan data form, sampai mengembalikan JSON untuk API.

    Artikel ini membahas cara membuat controller di Laravel 12: dari controller dasar, resource controller, sampai best practice yang dipakai tim profesional.

    Membuat Controller Baru

    Gunakan perintah Artisan:

    php artisan make:controller ArticleController

    File akan dibuat di app/Http/Controllers/ArticleController.php:

    <?php
    
    namespace AppHttpControllers;
    
    use IlluminateHttpRequest;
    
    class ArticleController extends Controller
    {
        //
    }

    Tambahkan method sesuai kebutuhan. Misalnya untuk menampilkan daftar artikel:

    public function index()
    {
        $articles = Article::latest()->paginate(10);
        return view('articles.index', compact('articles'));
    }
    
    public function show(Article $article)
    {
        return view('articles.show', compact('article'));
    }

    Resource Controller

    Kalau Anda butuh semua operasi CRUD sekaligus, pakai flag --resource:

    php artisan make:controller ArticleController --resource

    Laravel akan generate 7 method sekaligus: index, create, store, show, edit, update, destroy.

    Daftarkan ke route dengan satu baris:

    Route::resource('articles', ArticleController::class);

    Ini otomatis membuat route untuk semua aksi CRUD, tidak perlu daftar satu per satu.

    API Resource Controller

    Untuk API yang tidak butuh halaman form (create/edit), pakai flag --api:

    php artisan make:controller Api/ArticleController --api

    Hasilnya hanya 5 method: index, store, show, update, destroy. Tanpa create dan edit.

    Route::apiResource('articles', ApiArticleController::class);

    Dependency Injection di Controller

    Laravel mendukung dependency injection lewat constructor. Ini cara yang direkomendasikan untuk inject service:

    <?php
    
    namespace AppHttpControllers;
    
    use AppServicesArticleService;
    use IlluminateHttpRequest;
    
    class ArticleController extends Controller
    {
        public function __construct(
            private ArticleService $articleService
        ) {}
    
        public function store(Request $request)
        {
            $validated = $request->validate([
                'title'   => 'required|string|max:255',
                'content' => 'required|string',
                'status'  => 'required|in:draft,published',
            ]);
    
            $article = $this->articleService->create($validated);
    
            return redirect()->route('articles.show', $article)
                             ->with('success', 'Artikel berhasil dibuat.');
        }
    }

    Middleware di Controller

    Di Laravel 12, cara attach middleware ke controller berubah. Tidak lagi lewat constructor, tapi lewat method middleware() di route atau lewat static method di controller:

    // Di routes/web.php
    Route::resource('articles', ArticleController::class)
         ->middleware('auth');
    
    // Atau partial — hanya method tertentu
    Route::resource('articles', ArticleController::class)
         ->only(['store', 'update', 'destroy'])
         ->middleware('auth');

    Kalau ingin lebih granular per-method, pakai route biasa:

    Route::get('/articles', [ArticleController::class, 'index']);
    Route::post('/articles', [ArticleController::class, 'store'])->middleware('auth');
    Route::get('/articles/{article}', [ArticleController::class, 'show']);

    Form Request untuk Validasi

    Untuk controller yang lebih bersih, pindahkan validasi ke Form Request:

    php artisan make:request StoreArticleRequest
    <?php
    
    namespace AppHttpRequests;
    
    use IlluminateFoundationHttpFormRequest;
    
    class StoreArticleRequest extends FormRequest
    {
        public function authorize(): bool
        {
            return auth()->check();
        }
    
        public function rules(): array
        {
            return [
                'title'   => 'required|string|max:255',
                'content' => 'required|string|min:100',
                'status'  => 'required|in:draft,published',
            ];
        }
    }

    Gunakan di controller:

    public function store(StoreArticleRequest $request)
    {
        $article = Article::create($request->validated());
    
        return redirect()->route('articles.show', $article)
                         ->with('success', 'Artikel disimpan.');
    }

    Controller jadi lebih ringkas karena validasi sudah diurus Form Request.

    Nested Resource Controller

    Kalau ada relasi hierarkis, misalnya komentar yang dimiliki artikel, gunakan nested resource:

    Route::resource('articles.comments', CommentController::class);

    URL yang dihasilkan: /articles/{article}/comments/{comment}

    Controller-nya otomatis menerima kedua model sebagai parameter:

    public function store(Request $request, Article $article)
    {
        $comment = $article->comments()->create([
            'body'    => $request->validated('body'),
            'user_id' => auth()->id(),
        ]);
    
        return redirect()->route('articles.show', $article);
    }

    Baca Juga

    Butuh tim untuk membangun aplikasi web berbasis Laravel dari awal? Lihat layanan pengembangan aplikasi kami.

  • Membuat Controller di Laravel 11

    Membuat Controller di Laravel 11

    Pada artikel ini kita akan membahas cara membuat controller di laravel 11 secara praktis, dari persiapan lingkungan hingga implementasi praktis dan best practice. Laravel sebagai framework PHP modern memudahkan pengelolaan arsitektur aplikasi dengan konsep controller, routing, dan dependency injection. Dalam konteks proyek nyata, memahami cara membangun controller yang bersih, terstruktur, dan maintainable adalah pondasi utama. Panduan ini dirancang untuk pemula hingga developer berpengalaman, dengan contoh kode yang bisa langsung dicoba di lingkungan lokal. Kami juga akan membahas bagaimana menjaga kode tetap scalable, mudah dites, dan mudah dipelihara seiring bertambahnya kompleksitas proyek. Kami menekankan bahwa praktik yang tepat saat membuat controller di laravel 11 akan mempercepat pengembangan, mengurangi bug, serta meningkatkan kemudahan kolaborasi antar tim.

    Persiapan Lingkungan Laravel 11

    Untuk memulai, pastikan lingkungan pengembangan sudah siap. Anda memerlukan PHP >= 8.1, Composer, dan Laravel 11. Instalasi bisa dilakukan melalui Composer create-project atau laravel/installer. Pastikan ekstensi yang diperlukan seperti PDO, BCMath, OpenSSL tersedia. Setelah itu, buat project baru:

    composer create-project laravel/laravel blog-laravel11 "11.x"

    Langkah ini menyiapkan fondasi MVC standar, sehingga Anda bisa mulai membangun membuat controller di laravel 11 dengan perintah Artisan. Bila Anda membutuhkan referensi langkah demi langkah, lihat Layanan Arrazy Inovasi untuk solusi terkait pengembangan web.

    Selain itu, sebaiknya Anda merujuk juga pada Dokumentasi Laravel Resmi dan Dokumentasi PHP untuk memahami opsi konfigurasi serta best practice penerapan arsitektur pada proyek nyata.

    Membuat Controller Pertama dengan Artisan

    Setelah proyek siap, langkah selanjutnya adalah membuat controller pertama. Gunakan Artisan untuk meng-generate controller secara cepat:

    php artisan make:controller HelloWorldController

    Untuk sebuah API atau halaman berita, Anda juga bisa membuat membuat controller di laravel 11 dengan opsi resource:

    php artisan make:controller ArticleController --resource

    Berikut contoh struktur dasar controller yang bisa Anda adaptasi:

    namespace App\Http\Controllers;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    
    class HelloWorldController extends Controller
    {
    public function index()
    {
    return view('hello.index');
    }
    }

    Pelajari bagaimana alur request menuju controller bisa divalidasi sederhana dengan Request type hinting, sehingga membuat controller di laravel 11 menjadi lebih elegan dan mudah di-test. Untuk referensi praktis, kunjungi Layanan Arrazy Inovasi.

    Routing dan Pemanfaatan Controller

    Setelah controller dibuat, ikuti langkah berikut untuk menghubungkannya dengan routing. Untuk halaman biasa:

    // routes/web.php
    use App\Http\Controllers\HelloWorldController;
    Route::get('/hello', [HelloWorldController::class, 'index']);

    Untuk struktur CRUD dengan resource controller:

    Route::resource('articles', ArticleController::class);

    Dengan routing yang terdefinisi, membuat controller di laravel 11 akan segera bisa diakses melalui URL. Jika Anda ingin solusi end-to-end, lihat Layanan Arrazy Inovasi Teknologi.

    Resource Controller untuk CRUD

    Resource controller memudahkan implementasi operasi Create, Read, Update, Delete. Dengan satu deklarasi, Laravel akan mengerti semua rute konvensional. Berikut contoh metode inti yang umum dipakai:

    public function index() { ... }
    public function show($id) { ... }
    public function store(Request $request) { ... }
    public function update(Request $request, $id) { ... }
    public function destroy($id) { ... }

    Contoh Struktur File Controller

    Berikut contoh file Controller lengkap untuk Article dengan beberapa metode:

    namespace App\\Http\\Controllers;
    
    use App\\Http\\Controllers\\Controller;
    use Illuminate\\Http\\Request;
    use App\\Models\\Article;
    
    class ArticleController extends Controller
    {
    public function index()
    {
    $articles = Article::all();
    return view('articles.index', compact('articles'));
    }
    
    public function create()
    {
    return view('articles.create');
    }
    
    public function store(Request $request)
    {
    $data = $request->validate(['title' => 'required|string', 'content' => 'required']);
    Article::create($data);
    return redirect()->route('articles.index');
    }
    
    public function show(Article $article)
    {
    return view('articles.show', compact('article'));
    }
    
    public function edit(Article $article)
    {
    return view('articles.edit', compact('article'));
    }
    
    public function update(Request $request, Article $article)
    {
    $data = $request->validate(['title' => 'required|string', 'content' => 'required']);
    $article->update($data);
    return redirect()->route('articles.index');
    }
    
    public function destroy(Article $article)
    {
    $article->delete();
    return redirect()->route('articles.index');
    }
    }

    Dengan struktur seperti ini, membuat controller di laravel 11 tidak lagi menjadi pekerjaan yang menakutkan. Untuk mengecek integrasi dengan view dan model, bagian berikutnya akan membantu Anda memahami pola penggunaan view dan dependency injection.

    Integrasi dengan View dan Dependency Injection

    Controller di Laravel biasanya bekerja bersama View (Blade) dan model. Anda bisa mengembalikan data ke view dengan compact, atau menggunakan resource responses untuk API. Dependency Injection memudahkan pengambilan layanan (misalnya repository) tanpa membuat instance secara manual. Contoh sederhana:

    public function index()
    {
    $items = Item::all();
    return view('items.index', compact('items'));
    }

    Menyiapkan layanan khusus dapat dilakukan melalui constructor injection, sehingga logika bisnis tidak tertumpuk di controller. Jika Anda ingin solusi end-to-end, telusuri lebih lanjut di Layanan Arrazy Inovasi untuk memahami bagaimana arsitektur layanan dapat meningkatkan kualitas proyek Anda.

    Praktik Terbaik dan Keamanan

    Beberapa praktik terbaik saat membuat controller di laravel 11 meliputi:

    – Memisahkan logika presentasi dari logika bisnis dengan menggunakan service class atau repository.

    – Menggunakan Form Request untuk validasi agar controller tetap bersih.

    – Mengunci akses dengan middleware sesuai kebutuhan (auth, role-based access, dll).

    – Menjaga ukuran controller tetap kecil dengan membagi fungsi ke dalam kelas yang jelas.

    – Menambahkan komentar yang relevan dan dokumentasi singkat di tiap metode penting. Pelajari bagaimana Laravel menangani request lifecycle melalui Dokumentasi Laravel Resmi untuk pemahaman yang lebih dalam.

    Kalau Anda butuh dukungan implementasi nyata, Layanan Arrazy Inovasi siap membantu Anda—mulai dari pengembangan website hingga solusi integrasi ERP berbasis Laravel.

    Di tengah tutorial ini, Anda juga bisa meninjau beberapa layanan utama yang relevan, seperti Jasa Pembuatan Website, Jasa Pembuatan Aplikasi Mobile, Jasa SEO, Jasa Pembuatan Chatbot, dan Jasa Website Sekolah untuk kebutuhan edukasi digital Anda.

    Selain itu, untuk memperkaya referensi teknis Anda, lihat juga dokumentasi terbaru pada Dokumentasi PHP dan Dokumentasi Laravel Resmi sebagai pedoman standar industri.

    Penutup yang Menginspirasi

    Dengan memahami cara membuat controller di laravel 11 melalui pendekatan yang terstruktur, Anda akan lebih percaya diri mengelola proyek Laravel berukuran kecil maupun besar. Kunci utamanya adalah memulai dari konsep sederhana, lalu secara bertahap menambah kompleksitas dengan pola desain yang telah teruji. Jika Anda ingin mempercepat waktu implementasi, Layanan Arrazy Inovasi siap membantu Anda menyusun arsitektur aplikasi yang kuat bersama tim ahli kami.

    Terima kasih telah mengikuti panduan ini. Semoga langkah demi langkah dalam tutorial ini membantu Anda memahami bagaimana membuat controller di laravel 11 secara praktis dan profesional. Jangan ragu untuk menjangkau tim kami untuk bantuan lebih lanjut.

     

  • Routing di Laravel: Panduan Lengkap dengan Contoh Kode

    Routing di Laravel: Panduan Lengkap dengan Contoh Kode

    Routing adalah pintu masuk semua request di Laravel. Sebelum request sampai ke controller atau logika apapun, dia harus melewati router dulu. Memahami cara kerja routing akan membuat kamu lebih mudah membangun struktur aplikasi yang rapi dan mudah di-maintain.

    Konsep Dasar: Bagaimana Request Diproses

    Saat browser mengirim request ke GET /posts, Laravel membaca file routes/web.php, mencari route yang cocok, lalu meneruskan ke handler yang ditentukan. Urutan ini tidak bisa dibalik.

    Bentuk route paling sederhana:

    // routes/web.php
    Route::get('/posts', function () {
        return 'Daftar semua post';
    });
    
    // Atau langsung ke controller
    Route::get('/posts', [PostController::class, 'index']);

    HTTP Method yang Tersedia

    Route::get('/posts', [PostController::class, 'index']);
    Route::post('/posts', [PostController::class, 'store']);
    Route::put('/posts/{id}', [PostController::class, 'update']);
    Route::patch('/posts/{id}', [PostController::class, 'update']);
    Route::delete('/posts/{id}', [PostController::class, 'destroy']);

    Kalau mau handle lebih dari satu method sekaligus:

    Route::match(['get', 'post'], '/form', [FormController::class, 'handle']);
    Route::any('/webhook', [WebhookController::class, 'receive']);

    Route Parameter

    Parameter wajib — request harus menyertakan nilai ini:

    Route::get('/users/{id}', function (string $id) {
        return "User ID: $id";
    });
    
    // Bisa langsung inject model (Route Model Binding)
    Route::get('/users/{user}', function (User $user) {
        return $user; // otomatis cari User::find($id)
    });

    Parameter opsional — tambahkan ? dan nilai default:

    Route::get('/posts/{slug?}', function (string $slug = 'semua') {
        return "Slug: $slug";
    });

    Tambahkan constraint untuk validasi parameter:

    Route::get('/users/{id}', [UserController::class, 'show'])
        ->where('id', '[0-9]+');  // hanya menerima angka
    
    Route::get('/posts/{slug}', [PostController::class, 'show'])
        ->where('slug', '[a-z0-9-]+');

    Named Route

    Named route memudahkan generate URL di dalam kode, tidak perlu hardcode string URL:

    Route::get('/posts/{id}', [PostController::class, 'show'])
        ->name('posts.show');
    
    // Generate URL dari nama
    $url = route('posts.show', ['id' => 5]);
    // Hasil: http://app.test/posts/5
    
    // Redirect ke named route
    return redirect()->route('posts.show', ['id' => 5]);

    Route Group

    Grup route berguna untuk menerapkan prefix, middleware, atau namespace secara serentak:

    // Grup dengan prefix URL
    Route::prefix('admin')->group(function () {
        Route::get('/dashboard', [AdminController::class, 'dashboard']);
        Route::get('/users', [AdminController::class, 'users']);
        // Accessible di: /admin/dashboard, /admin/users
    });
    
    // Grup dengan middleware
    Route::middleware(['auth'])->group(function () {
        Route::get('/profile', [ProfileController::class, 'show']);
        Route::get('/settings', [SettingController::class, 'index']);
    });
    
    // Kombinasi keduanya
    Route::middleware(['auth'])->prefix('dashboard')->group(function () {
        Route::get('/overview', [DashboardController::class, 'overview']);
    });

    Resource Route

    Satu baris untuk membuat 7 route CRUD sekaligus:

    Route::resource('posts', PostController::class);

    Ini setara dengan:

    GET     /posts              → index
    GET     /posts/create       → create
    POST    /posts              → store
    GET     /posts/{post}       → show
    GET     /posts/{post}/edit  → edit
    PUT     /posts/{post}       → update
    DELETE  /posts/{post}       → destroy

    Kalau tidak butuh semua route:

    // Hanya route tertentu
    Route::resource('posts', PostController::class)
        ->only(['index', 'show']);
    
    // Kecualikan route tertentu
    Route::resource('posts', PostController::class)
        ->except(['create', 'edit']);

    Melihat Semua Route yang Terdaftar

    php artisan route:list
    
    # Filter berdasarkan nama
    php artisan route:list --name=posts
    
    # Filter berdasarkan method
    php artisan route:list --method=GET

    Route Caching untuk Production

    Di production, cache route agar lebih cepat:

    php artisan route:cache
    
    # Hapus cache (jalankan setelah ubah routes/)
    php artisan route:clear

    Baca juga: Membuat Controller di Laravel 12 dan Invokable Controller di Laravel.

    Kalau kamu butuh tim untuk membangun aplikasi Laravel dari arsitektur awal sampai deployment, lihat layanan pengembangan aplikasi kami.

  • Invokable Controller di Laravel: Cara Kerja, Contoh Kode, dan Kapan Memakainya

    Invokable Controller di Laravel: Cara Kerja, Contoh Kode, dan Kapan Memakainya

    Ada satu fitur Laravel yang sering dilewatkan developer pemula: invokable controller. Padahal kalau dipakai di tempat yang tepat, kode jadi lebih bersih dan lebih mudah dibaca.

    Artikel ini menjelaskan apa itu invokable controller, kapan sebaiknya dipakai, dan bagaimana cara implementasinya di Laravel 12.

    Apa Itu Invokable Controller?

    Invokable controller adalah controller yang hanya punya satu method: __invoke(). Karena hanya ada satu aksi, Anda tidak perlu menyebutkan nama method saat mendaftarkan route.

    Ini berbeda dengan controller biasa yang bisa punya banyak method seperti index(), store(), update(), dll.

    Buat invokable controller lewat Artisan:

    php artisan make:controller ShowDashboardController --invokable

    Hasilnya:

    <?php
    
    namespace AppHttpControllers;
    
    use IlluminateHttpRequest;
    
    class ShowDashboardController extends Controller
    {
        public function __invoke(Request $request)
        {
            //
        }
    }

    Cara Mendaftarkan ke Route

    Karena hanya ada satu aksi, cara daftarkan ke route cukup langsung pakai nama class-nya:

    use AppHttpControllersShowDashboardController;
    
    Route::get('/dashboard', ShowDashboardController::class);

    Bandingkan dengan controller biasa yang harus sebut method-nya:

    Route::get('/dashboard', [DashboardController::class, 'index']);

    Lebih ringkas, dan route-nya lebih mudah dibaca, terutama kalau ada banyak route.

    Contoh Kasus Nyata

    Misalnya Anda punya halaman yang menampilkan laporan bulanan. Logikanya spesifik untuk satu tujuan, tidak perlu dibagi ke beberapa method:

    <?php
    
    namespace AppHttpControllersReports;
    
    use IlluminateHttpRequest;
    use AppHttpControllersController;
    use AppModelsOrder;
    
    class MonthlyReportController extends Controller
    {
        public function __invoke(Request $request)
        {
            $month = $request->query('month', now()->month);
            $year  = $request->query('year', now()->year);
    
            $orders = Order::whereMonth('created_at', $month)
                           ->whereYear('created_at', $year)
                           ->with('customer')
                           ->get();
    
            return view('reports.monthly', compact('orders', 'month', 'year'));
        }
    }

    Route-nya:

    Route::get('/reports/monthly', MonthlyReportController::class)
         ->middleware('auth')
         ->name('reports.monthly');

    Rapi. Satu controller, satu tujuan.

    Kapan Pakai Invokable Controller?

    Invokable controller cocok untuk:

    • Halaman yang hanya punya satu aksi (tampil laporan, proses webhook, generate PDF)
    • Action handler — satu action spesifik yang tidak perlu dibundel dengan aksi lain
    • Single-purpose endpoint yang ingin dipisah dari controller utama agar tidak membesar

    Tidak cocok untuk resource yang punya banyak aksi CRUD. Untuk itu tetap pakai resource controller biasa.

    Dependency Injection di Invokable Controller

    Sama seperti controller biasa, Anda bisa inject service lewat constructor atau langsung di method __invoke():

    <?php
    
    namespace AppHttpControllers;
    
    use AppServicesInvoiceService;
    use IlluminateHttpRequest;
    
    class GenerateInvoiceController extends Controller
    {
        public function __construct(
            private InvoiceService $invoiceService
        ) {}
    
        public function __invoke(Request $request)
        {
            $validated = $request->validate([
                'order_id' => 'required|exists:orders,id',
            ]);
    
            $pdf = $this->invoiceService->generate($validated['order_id']);
    
            return response()->download($pdf);
        }
    }

    Baca Juga

    Kalau Anda butuh tim untuk membangun aplikasi web berbasis Laravel, dari arsitektur sampai deployment — lihat layanan pengembangan aplikasi kami.

  • Cara Install Laravel 12: Panduan Lengkap dari Instalasi sampai Project Jalan

    Cara Install Laravel 12: Panduan Lengkap dari Instalasi sampai Project Jalan

    Kamu baru mau mulai belajar Laravel 12 atau mau memulai project baru? Artikel ini memandu instalasi dari nol, mulai dari kebutuhan sistem, instalasi Laravel, sampai project pertama bisa jalan di browser.

    Tidak ada yang dilewati. Setiap perintah dijelaskan kenapa dijalankan, bukan sekadar disalin.

    Kebutuhan Sistem Sebelum Mulai

    Pastikan versi PHP dan tools berikut sudah terpasang:

    • PHP 8.2 atau lebih baru — Laravel 12 butuh minimal PHP 8.2
    • Composer — package manager PHP, download di getcomposer.org
    • Node.js + npm — untuk kompilasi asset frontend (Vite)
    • Database — MySQL, PostgreSQL, atau SQLite

    Cek versi PHP kamu:

    php --version
    # Harus menampilkan: PHP 8.2.x atau lebih baru

    Instalasi Laravel 12 via Composer

    Ada dua cara: lewat Laravel Installer atau langsung via Composer. Cara kedua lebih universal:

    composer create-project laravel/laravel nama-project "12.*"
    cd nama-project

    Kalau mau pakai Laravel Installer (lebih cepat untuk project berikutnya):

    # Install Laravel Installer sekali saja
    composer global require laravel/installer
    
    # Buat project baru
    laravel new nama-project --using=laravel/12.x

    Konfigurasi File .env

    Setelah project dibuat, buka file .env di root project. Ini konfigurasi yang perlu diubah minimal:

    APP_NAME=NamaAppKamu
    APP_ENV=local
    APP_KEY=                  # Akan diisi otomatis
    APP_DEBUG=true
    APP_URL=http://localhost
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=nama_database
    DB_USERNAME=root
    DB_PASSWORD=

    Generate application key: wajib dilakukan sekali saat setup:

    php artisan key:generate

    Perintah ini mengisi nilai APP_KEY di file .env secara otomatis. Key ini dipakai Laravel untuk enkripsi session dan cookie.

    Menjalankan Migration

    Laravel sudah menyertakan beberapa migration default (tabel users, sessions, cache, jobs). Jalankan semuanya sekaligus:

    php artisan migrate

    Kalau muncul error koneksi database, pastikan database yang kamu tulis di .env sudah dibuat terlebih dahulu:

    # Di MySQL
    CREATE DATABASE nama_database;

    Jalankan Development Server

    Laravel punya built-in development server lewat Artisan:

    php artisan serve
    # Akses di: http://127.0.0.1:8000

    Atau kalau kamu pakai Vite untuk frontend (default di Laravel 12), jalankan keduanya di terminal berbeda:

    # Terminal 1
    php artisan serve
    
    # Terminal 2
    npm install
    npm run dev

    Struktur Folder yang Perlu Kamu Kenali

    Tidak perlu hafal semua folder sekaligus. Ini yang paling sering dipakai:

    app/
      Http/
        Controllers/    ← semua controller ada di sini
        Middleware/     ← middleware request
      Models/           ← Eloquent models
    config/             ← konfigurasi aplikasi
    database/
      migrations/       ← file migration tabel
    routes/
      web.php           ← route untuk halaman web
      api.php           ← route untuk API
    resources/
      views/            ← file Blade (template HTML)

    Verifikasi Instalasi Berhasil

    Buka http://127.0.0.1:8000 di browser. Kalau muncul halaman welcome Laravel dengan versi Laravel 12, instalasi berhasil.

    Cek juga via Artisan:

    php artisan --version
    # Laravel Framework 12.x.x

    Langkah Berikutnya

    Setelah instalasi selesai, langkah selanjutnya:

    Kalau kamu sedang membangun project Laravel untuk client atau kebutuhan bisnis dan butuh tim yang berpengalaman, lihat layanan pengembangan aplikasi kami.

  • Panduan Lengkap: cara install laravel 11 untuk Pemula

    Panduan Lengkap: cara install laravel 11 untuk Pemula

    cara install laravel 11 adalah topik penting bagi pengembang PHP modern yang ingin membangun aplikasi web dengan kerangka kerja yang andal. Dalam panduan ini, Anda akan menemukan langkah-langkah praktis, contoh kode yang jelas, serta penjelasan konsep inti agar proses instalasi dan konfigurasi berjalan mulus. Artikel ini disusun dengan tujuan membantu pemula memahami alur kerja instalasi, sekaligus memberi wawasan untuk pengembang berpengalaman agar tidak terjebak pada detail yang membingungkan. Jika Anda ingin melihat bagaimana solusi teknologi dari pihak lain dapat meningkatkan efektivitas proyek Anda, silakan lihat

    Persiapan Sistem dan Prasyarat

    Persyaratan Sistem

    Sebelum mulai, pastikan lingkungan development Anda memenuhi persyaratan minimum. Minimal PHP 8.1 ke atas diperlukan untuk menjalankan Laravel 11, disertai ekstensi PHP yang umum seperti OpenSSL, PDO, BCMath, JSON, dan mbstring. Sistem operasi bisa Linux, macOS, atau Windows (melalui WSL jika Anda menggunakan Windows). Selain itu, pastikan Anda memiliki akses internet stabil karena proses instalasi akan mengambil dependensi lewat Composer. Untuk referensi resmi tentang kebutuhan lingkungan, baca Dokumentasi Laravel di Dokumentasi Resmi Laravel 11.

    Perangkat Lunak yang Diperlukan

    Langkah berikutnya adalah memastikan Composer terinstal dengan benar, karena Laravel 11 dibangun di atas ekosistem PHP yang memanfaatkan Composer untuk manajemen dependensi. Selain itu, Node.js direkomendasikan jika Anda ingin mengelola assets front-end dengan alat seperti Vite. Anda juga bisa meninjau panduan praktis di Dokumentasi Instalasi Laravel untuk memastikan versi yang kompatibel dengan lingkungan Anda.

    Langkah-langkah Instalasi Laravel 11

    Instalasi PHP dan Ekstensi

    Pastikan PHP telah terpasang pada sistem Anda. Anda bisa memeriksa versi PHP dengan perintah berikut:

    php -v

    Pastikan setidaknya PHP 8.1 terpasang. Jika belum, instal versi terbaru sesuai sistem operasi Anda dan pastikan ekstensi penting seperti OpenSSL, PDO, dan mbstring telah aktif di php.ini. Untuk rujukan praktis, lihat Dokumentasi Instalasi Laravel 11.

    Instalasi Composer dan Laravel 11

    Setelah PHP siap, langkah berikutnya adalah menginstal Laravel melalui Composer. Jalankan perintah berikut untuk mengunduh proyek Laravel versi 11 dalam sebuah folder bernama blog (ganti nama folder sesuai kebutuhan):

    composer create-project --prefer-dist laravel/laravel blog 11.*

    Proses ini akan mengunduh kerangka kerja Laravel 11 beserta dependensinya. Tunggu hingga proses selesai. Jika Anda lebih suka mempelajari dokumentasi resmi sebagai panduan, cek Dokumentasi Resmi Laravel 11 untuk opsi startup tambahan.

    Membuat Proyek Laravel dan Struktur Dasar

    Setelah proses pengunduhan selesai, masuk ke direktori proyek lalu siapkan kunci aplikasi dan struktur dasar. Begini langkah praktisnya:

    cd blog php artisan key:generate

    Perintah ini akan menghasilkan APP_KEY yang diperlukan untuk keamanan aplikasi. Anda juga bisa melihat dokumentasi umum tentang arsitektur proyek Laravel pada halaman Dokumentasi Laravel. Selain itu, jika Anda ingin memperdalam praktik terbaik pengelolaan proyek Laravel, Tutorial Laravel dari Laracasts bisa menjadi referensi berguna.

    Konfigurasi Projek Laravel 11

    Mengatur .env

    Salin file contoh .env untuk membuat konfigurasi lingkungan lokal:

    cp .env.example .env 

    Selanjutnya, sesuaikan pengaturan database dan aplikasi Anda. Contoh pengaturan umum pada bagian database adalah sebagai berikut (sesuaikan dengan database yang Anda gunakan):

    DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=user_database DB_PASSWORD=password_database

    Setelah mengubah .env, jalankan perintah berikut untuk menghasilkan APP_KEY jika diperlukan:

    php artisan key:generate

    Anda juga bisa meninjau dasar-dasar konfigurasi Laravel melalui Dokumentasi Konfigurasi Laravel sebagai referensi tambahan.

    Menjalankan Server Lokal

    Untuk melihat proyek Laravel 11 Anda secara langsung, jalankan server pengembangan lokal dengan perintah di bawah ini. Server biasanya berjalan pada http://localhost:8000:

    php artisan serve

    Ketika server berjalan, buka browser Anda dan akses http://localhost:8000. Jika Anda menghadapi masalah koneksi atau port, Anda bisa menambah port lain dengan opsi –port, misalnya php artisan serve --port=8080. Dalam proses ini, Anda juga bisa memantau log untuk melihat potensi masalah pada environment yang Anda konfigurasikan. Untuk referensi desain arsitektur dan praktik terbaik deployment Laravel, lihat Dokumentasi Deploy Laravel.

    Tips dan Best Practices

    Beberapa praktik terbaik saat bekerja dengan Laravel 11 meliputi manajemen dependensi yang hati-hati, penggunaan environment yang terisolasi, serta menjaga keamanan aplikasi. Selalu pastikan versi PHP dan ekstensi pendukungnya kompatibel dengan Laravel 11 yang Anda gunakan. Selain itu, untuk mempercepat produksi proyek dan menjaga kualitas, Anda bisa mengeksplorasi layanan Arrazy Inovasi seperti Layanan Pembuatan Website dari Arrazy Inovasi, Layanan Aplikasi Mobile, dan Jasa SEO untuk meningkatkan kehadiran digital Anda. Soft-sell: jika Anda ingin solusi end-to-end, Layanan Arrazy Inovasi untuk Transformasi Digital siap membantu dari pembuatan situs hingga optimasi SEO. Selain itu, Anda bisa merujuk pada dokumentasi resmi Laravel 11 untuk praktik terbaik pembaruan, migrasi, serta pengelolaan migrasi database. Lalu, jika Anda ingin pemahaman praktis yang lebih mendalam, pertimbangkan sumber belajar seperti Dokumentasi Resmi Laravel 11 atau Tutorial Laravel dari Laracasts untuk memperkaya pengetahuan Anda. Dalam konteks implementasi nyata, Anda bisa mengarahkan fokus ke layanan Arrazy Inovasi yang mendukung berbagai kebutuhan proyek: Layanan Pembuatan Chatbot Berkualitas untuk interaksi pelanggan, Layanan Pembuatan Website untuk infrastruktur digital, serta Jasa SEO untuk visibilitas mesin pencari.

    Pemecahan Masalah Umum

    Masalah PATH PHP yang Tidak Ditemukan

    Beberapa kasus umum terkait PATH PHP adalah ketika terminal tidak mengenali perintah php. Pastikan PATH PHP telah ditambahkan ke variabel lingkungan sistem Anda. Cek dengan php -v dan jika perlu, tambahkan direktori PHP ke PATH. Untuk referensi, Dokumentasi Laravel dan sumber belajar lain bisa membantu Anda memetakan solusi yang tepat.

    Masalah Koneksi Database

    Jika Laravel tidak bisa terhubung ke database, periksa konfigurasi di .env, pastikan database berjalan, kredensial benar, dan driver PDO.MySQL aktif. Cek log error aplikasi di storage/logs/ untuk detail pesan kesalahan. Rumus umum adalah memvalidasi kredensial maupun host database yang benar sesuai lingkungan pengembangan Anda. Penutup: dengan mengikuti langkah-langkah yang terperinci di atas, Anda telah memiliki pondasi kuat untuk menjalankan cara install laravel 11 dalam lingkungan lokal maupun produksi. Jika Anda ingin mempercepat implementasi dan mendapatkan dukungan teknis yang komprehensif, jangan ragu untuk menjelajahi layanan Arrazy Inovasi yang meliputi pembuatan website, aplikasi mobile, SEO, serta chatbot untuk bisnis Anda. Kunjungi Halaman Layanan Arrazy Inovasi untuk informasi paket lengkap maupun konsultasi teknis yang disesuaikan kebutuhan perusahaan Anda. Semoga panduan ini bermanfaat dan selamat mengembangkan proyek Laravel 11 Anda dengan percaya diri.

  • Cara Install Laravel 11: Panduan Lengkap Termasuk Perubahan dari Versi Sebelumnya

    Cara Install Laravel 11: Panduan Lengkap Termasuk Perubahan dari Versi Sebelumnya

    Laravel 11 masih relevan. Banyak project production yang belum migrasi ke versi terbaru, dan kamu mungkin masuk ke project yang sudah berjalan di Laravel 11. Artikel ini panduan instalasi Laravel 11 dari awal, plus beberapa hal yang berbeda dari versi sebelumnya.

    Kebutuhan Sistem untuk Laravel 11

    • PHP 8.2 atau lebih baru — Laravel 11 minimal butuh PHP 8.2
    • Composer 2.x
    • Database — MySQL 8.0+, PostgreSQL 10+, atau SQLite 3.35+
    php --version
    composer --version

    Cara Install Laravel 11

    Instalasi via Composer:

    composer create-project laravel/laravel nama-project "11.*"
    cd nama-project

    Atau pakai Laravel Installer dengan menentukan versi:

    composer global require laravel/installer
    laravel new nama-project --using=laravel/11.x

    Apa yang Berubah di Laravel 11 Dibanding Laravel 10

    Beberapa perubahan penting yang perlu diketahui saat masuk ke project Laravel 11:

    Struktur folder lebih ramping. File app/Http/Kernel.php, app/Console/Kernel.php, dan app/Exceptions/Handler.php dihapus. Fungsinya dipindahkan ke bootstrap/app.php:

    // bootstrap/app.php di Laravel 11
    return Application::configure(basePath: dirname(__DIR__))
        ->withRouting(
            web: __DIR__.'/../routes/web.php',
            commands: __DIR__.'/../routes/console.php',
        )
        ->withMiddleware(function (Middleware $middleware) {
            // konfigurasi middleware di sini
        })
        ->withExceptions(function (Exceptions $exceptions) {
            // konfigurasi exception handling di sini
        })->create();

    Route default berkurang. Laravel 11 hanya punya dua file route default: web.php dan console.php. File api.php dan channels.php tidak dibuat otomatis — perlu buat sendiri atau jalankan:

    php artisan install:api
    php artisan install:broadcasting

    Setup Awal Setelah Instalasi

    Konfigurasi file .env:

    APP_NAME=NamaProject
    APP_ENV=local
    APP_DEBUG=true
    APP_URL=http://localhost
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=nama_db
    DB_USERNAME=root
    DB_PASSWORD=

    Generate app key dan jalankan migration:

    php artisan key:generate
    php artisan migrate

    Jalankan Development Server

    php artisan serve

    Buka http://127.0.0.1:8000 — kalau muncul halaman welcome Laravel, instalasi sukses.

    Upgrade ke Laravel 12?

    Kalau project kamu masih di Laravel 11 dan ingin upgrade, baca dokumentasi resmi upgrade guide di laravel.com. Untuk project baru, langsung pakai Laravel 12: Cara Install Laravel 12.

    Kalau kamu butuh bantuan migrasi atau maintenance project Laravel yang sudah berjalan, lihat layanan pengembangan aplikasi kami.