Blog

  • Tutorial PostgreSQL di Laravel: Setup, JSONB, dan Full-Text Search

    Laravel secara default menggunakan MySQL. Tapi kalau proyek Anda butuh fitur seperti JSON columns yang lebih canggih, full-text search bawaan, atau JSONB, PostgreSQL adalah pilihan yang solid.

    Artikel ini membahas cara setup PostgreSQL di Laravel, termasuk konfigurasi, perbedaan dengan MySQL, dan fitur-fitur PostgreSQL yang bisa dimanfaatkan langsung dari Eloquent.

    Instalasi dan Konfigurasi

    Pastikan extension PHP untuk PostgreSQL sudah aktif:

    # Ubuntu/Debian
    sudo apt install php-pgsql
    
    # Cek apakah sudah aktif
    php -m | grep pdo_pgsql

    Edit file .env:

    DB_CONNECTION=pgsql
    DB_HOST=127.0.0.1
    DB_PORT=5432
    DB_DATABASE=nama_database
    DB_USERNAME=postgres
    DB_PASSWORD=password_anda

    Tidak perlu ubah konfigurasi lain. Laravel sudah punya driver PostgreSQL bawaan.

    Perbedaan Sintaks Migration

    Sebagian besar sintaks migration sama antara MySQL dan PostgreSQL. Perbedaan utama ada di beberapa tipe data:

    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->decimal('price', 10, 2);
    
        // PostgreSQL: pakai jsonb, bukan json biasa
        $table->jsonb('metadata')->nullable();
    
        // PostgreSQL: UUID native
        $table->uuid('external_id')->unique();
    
        // Enum di PostgreSQL butuh cast berbeda
        $table->string('status')->default('active');
    
        $table->timestamps();
    });

    Tips: Di PostgreSQL, pakai jsonb daripada json. JSONB disimpan dalam format binary yang lebih efisien untuk query dan indexing.

    Query JSON dengan PostgreSQL

    PostgreSQL punya operator JSON yang sangat powerful. Di Laravel, Anda bisa pakai operator -> dan ->> langsung di Eloquent:

    // Cari produk berdasarkan field di dalam JSON
    $products = Product::where('metadata->category', 'elektronik')->get();
    
    // Atau dengan whereJsonContains
    $products = Product::whereJsonContains('metadata->tags', 'promo')->get();
    
    // Query nested JSON
    $products = Product::where('metadata->specs->weight', '>', 500)->get();
    

    Contoh migration dengan index JSONB:

    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->jsonb('metadata')->nullable();
        $table->timestamps();
    });
    
    // Tambah index GIN untuk performa query JSONB
    DB::statement('CREATE INDEX products_metadata_gin ON products USING GIN (metadata jsonb_path_ops)');
    

    Full-Text Search

    PostgreSQL punya full-text search bawaan yang bisa langsung dipakai tanpa plugin tambahan:

    // Migration: tambah kolom tsvector
    $table->tsvector('search_vector')->nullable();
    
    // Isi kolom tsvector saat insert/update
    DB::statement("
        UPDATE articles
        SET search_vector = to_tsvector('indonesian', coalesce(title, '') || ' ' || coalesce(content, ''))
    ");
    
    // Query full-text search
    $results = Article::whereRaw(
        "search_vector @@ plainto_tsquery('indonesian', ?)",
        [$keyword]
    )->get();

    Untuk proyek besar, buat trigger PostgreSQL agar search_vector otomatis diperbarui saat data berubah.

    UUID sebagai Primary Key

    PostgreSQL mendukung UUID natively. Cara pakai di Laravel 12:

    Schema::create('orders', function (Blueprint $table) {
        $table->uuid('id')->primary()->default(DB::raw('gen_random_uuid()'));
        $table->string('status');
        $table->timestamps();
    });

    Di model:

    <?php
    
    namespace AppModels;
    
    use IlluminateDatabaseEloquentModel;
    use IlluminateDatabaseEloquentConcernsHasUuids;
    
    class Order extends Model
    {
        use HasUuids;
    }

    Transaksi dan Savepoint

    PostgreSQL mendukung nested transaction lewat savepoint. Di Laravel ini otomatis dipakai saat Anda nested DB::transaction():

    DB::transaction(function () {
        $order = Order::create([...]);
    
        DB::transaction(function () use ($order) {
            // Ini pakai savepoint di PostgreSQL
            // Kalau gagal, hanya bagian ini yang di-rollback
            foreach ($order->items as $item) {
                Inventory::decrement($item->product_id, $item->qty);
            }
        });
    
        $order->update(['status' => 'confirmed']);
    });

    Koneksi Multiple Database

    Kalau Anda pakai MySQL dan PostgreSQL bersamaan, tambahkan konfigurasi di config/database.php:

    'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            // ...
        ],
        'pgsql' => [
            'driver'   => 'pgsql',
            'host'     => env('PGSQL_HOST', '127.0.0.1'),
            'port'     => env('PGSQL_PORT', '5432'),
            'database' => env('PGSQL_DATABASE'),
            'username' => env('PGSQL_USERNAME'),
            'password' => env('PGSQL_PASSWORD'),
        ],
    ],

    Di model, tentukan koneksi yang dipakai:

    class AnalyticsEvent extends Model
    {
        protected $connection = 'pgsql';
    }

    Baca Juga

    Butuh tim yang berpengalaman setup aplikasi Laravel dengan PostgreSQL di production? Lihat layanan pengembangan aplikasi kami.

  • PHP Artisan Laravel: 20+ Command yang Wajib Dikuasai Developer

    PHP Artisan adalah command-line interface (CLI) bawaan Laravel yang wajib dikuasai setiap developer. Dengan php artisan, Anda bisa menjalankan berbagai tugas development: membuat controller, menjalankan migration, menyalakan server lokal, membersihkan cache, sampai membuat command custom. Artikel ini membahas 20+ command Artisan yang paling sering dipakai dalam proyek Laravel sehari-hari.

    Kalau Anda baru belajar Laravel, memahami apa itu php artisan akan sangat membantu karena hampir semua workflow Laravel menggunakan Artisan. Kalau sudah lama pakai Laravel, artikel ini bisa jadi referensi cepat untuk command yang mungkin terlupakan.

    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.

    PHP artisan serve adalah salah satu command paling dasar untuk menjalankan development server Laravel di localhost:8000.

    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
    
    # Clear compiled classes
    php artisan clear-compiled
    
    # Optimize untuk production
    php artisan optimize
    php artisan config:cache
    php artisan route:cache
    php artisan view:cache

    Command untuk Development Server

    PHP artisan serve untuk apa? Command ini menjalankan development server Laravel di localhost tanpa perlu setup Apache/Nginx:

    # Jalankan server di localhost:8000
    php artisan serve
    
    # Custom host dan port
    php artisan serve --host=192.168.1.100 --port=8080
    
    # Jalankan di background (Linux/Mac)
    nohup php artisan serve &

    Command Tinker

    PHP artisan tinker untuk apa? Tinker adalah REPL (Read-Eval-Print Loop) untuk testing kode Laravel secara interaktif:

    # Masuk ke Tinker
    php artisan tinker
    
    # Contoh penggunaan di dalam Tinker:
    >>> User::count()
    => 150
    
    >>> $user = User::find(1)
    >>> $user->name
    => "John Doe"
    
    >>> Mail::to('test@example.com')->send(new WelcomeMail())
    => null

    Tinker sangat berguna untuk testing model, relationship, atau debugging tanpa perlu buat route khusus.

    Command Maintenance Mode

    Untuk maintenance aplikasi tanpa downtime total:

    # Aktifkan maintenance mode
    php artisan down
    
    # Maintenance dengan pesan custom
    php artisan down --message="Sedang update fitur baru"
    
    # Maintenance dengan secret key (bypass untuk developer)
    php artisan down --secret="rahasia123"
    
    # Matikan maintenance mode
    php artisan up

    Saat maintenance mode aktif, user akan melihat halaman maintenance. Developer bisa akses dengan URL: yoursite.com/rahasia123

    Command Berguna Lainnya

    # Lihat semua route
    php artisan route:list
    
    # Generate application key
    php artisan key:generate
    
    # Buat symbolic link storage
    php artisan storage:link
    
    # Queue worker
    php artisan queue:work
    php artisan queue:restart
    
    # Schedule runner (untuk cron job)
    php artisan schedule:run
    
    # Backup database (jika pakai spatie/laravel-backup)
    php artisan backup:run

    Pertanyaan Umum tentang Artisan

    1. Apa itu php artisan?

    PHP Artisan adalah command-line interface bawaan Laravel untuk menjalankan berbagai tugas development seperti membuat file, mengelola database, dan maintenance aplikasi.

    2. php artisan serve adalah apa?

    Command untuk menjalankan development server Laravel di localhost:8000 tanpa perlu setup web server seperti Apache atau Nginx.

    3. Kapan sebaiknya menggunakan Artisan?

    Gunakan Artisan untuk semua tugas development Laravel: generate file, migration, seeding, cache management, dan maintenance. Hampir semua workflow Laravel menggunakan Artisan.

    4. Apakah Artisan perlu di-install terpisah?

    Tidak. Artisan sudah built-in di setiap instalasi Laravel. File artisan ada di root folder project Laravel.

    5. Bagaimana cara melihat semua perintah Artisan?

    Jalankan php artisan list untuk melihat semua command yang tersedia, atau php artisan help [command] untuk bantuan command tertentu.

    Troubleshooting: Artisan Tidak Bisa Dijalankan

    1. Error: Could not open input file: artisan

    Pastikan Anda menjalankan command dari root folder Laravel (folder yang ada file artisan).

    2. Error: Class not found atau autoload bermasalah

    Jalankan composer dump-autoload untuk regenerate autoload files.

    3. Error koneksi database saat menjalankan migration

    Cek konfigurasi database di file .env. Pastikan database sudah dibuat dan kredensial benar.

    4. Perubahan route atau config tidak terbaca

    Clear cache dengan php artisan cache:clear, php artisan config:clear, dan php artisan route:clear.

    Butuh Bantuan Pengembangan Laravel?

    Jika Anda membutuhkan bantuan dalam pengembangan aplikasi Laravel yang lebih kompleks, tim developer Arrazy Inovasi siap membantu. Kami berpengalaman dalam membangun aplikasi web Laravel untuk berbagai kebutuhan bisnis.

    Untuk konsultasi lebih lanjut tentang proyek Laravel Anda, silakan hubungi kami.

    Baca Juga


    Baca Juga

  • 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.


    Baca Juga

  • 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.


    Baca Juga

  • Cara Install Laravel 11 untuk Pemula: Composer, Setup & Error Umum

    Cara Install Laravel 11 untuk Pemula: Composer, Setup & Error Umum

    Cara install Laravel 11 termasuk topik yang paling banyak dicari oleh developer PHP yang baru mulai belajar framework modern. Laravel 11, yang dirilis resmi pada Maret 2024, membawa beberapa perubahan struktural signifikan dibanding versi sebelumnya — terutama penghapusan beberapa file konfigurasi default dan penyederhanaan direktori app/. Panduan ini dirancang khusus untuk pemula yang baru pertama kali menginstal Laravel, maupun developer berpengalaman yang ingin memahami apa yang berubah dari Laravel 10 ke Laravel 11.

    Sebelum mulai, pastikan Anda sudah memiliki PHP 8.2+ dan Composer terinstal. Jika belum, panduan ini juga mencakup langkah persiapan tersebut.

    Kebutuhan Sistem untuk Laravel 11

    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 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.

    Cara Install Laravel 11

    1. Install PHP dan Ekstensi yang Diperlukan

    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.

    2. Install Composer

    Composer adalah package manager PHP yang wajib ada sebelum menginstal Laravel. Download dan install dari getcomposer.org, lalu verifikasi dengan:

    composer --version

    3. Buat Project Laravel 11 via Composer

    Setelah PHP dan Composer siap, jalankan perintah berikut untuk membuat project Laravel 11 baru:

    composer create-project --prefer-dist laravel/laravel nama-project "11.*"

    Atau, jika ingin menggunakan Laravel installer:

    composer global require laravel/installer
    laravel new nama-project

    Proses ini akan mengunduh Laravel 11 beserta semua dependensinya. Tunggu hingga selesai.

    4. Generate Application Key

    Masuk ke direktori project dan generate APP_KEY:

    cd nama-project
    php artisan key:generate

    Apa yang Berubah di Laravel 11 Dibanding Laravel 10

    Laravel 11 membawa perubahan struktural yang cukup signifikan:

    • Direktori app/ lebih ramping — banyak file provider dan middleware yang sebelumnya ada di sini dipindahkan atau dihapus
    • Tidak ada app/Http/Kernel.php — middleware sekarang di-register via bootstrap/app.php
    • Service Provider lebih sedikit — hanya AppServiceProvider yang tersisa secara default
    • File konfigurasi banyak dihilangkan dari root — dipindahkan ke dalam framework itu sendiri
    • Dukungan SQLite bawaan — database default berubah ke SQLite untuk kemudahan development lokal

    Setup Awal Setelah Instalasi

    Konfigurasi File .env

    Salin file contoh .env untuk membuat konfigurasi lingkungan lokal:

    cp .env.example .env

    Selanjutnya, sesuaikan pengaturan database dan aplikasi Anda. Contoh pengaturan untuk MySQL:

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

    Jalankan Migrasi Database

    php artisan migrate

    Jalankan Development Server

    Untuk melihat proyek Laravel 11 Anda secara langsung, jalankan development server:

    php artisan serve

    Server akan berjalan di http://localhost:8000. Buka di browser untuk memastikan instalasi berhasil.

    Upgrade ke Laravel 12?

    Jika Anda sudah menguasai Laravel 11 dan ingin bermigrasi ke Laravel 12, prosesnya relatif mulus karena kedua versi berbagi arsitektur yang sama. Baca panduan resmi di Laravel Upgrade Guide untuk langkah-langkah detail.

    Troubleshooting: Error Umum Saat Install Laravel 11

    Error: PHP version mismatch

    Jika muncul error “Your PHP version does not satisfy the requirements”, pastikan PHP Anda minimal versi 8.1. Cek dengan php -v dan upgrade jika perlu.

    Error: php artisan not found / command not found

    Pastikan Anda sudah masuk ke direktori project (cd nama-project) sebelum menjalankan perintah php artisan.

    Error: Composer require timeout

    Jika proses composer create-project gagal karena timeout, coba tambahkan flag --prefer-dist atau gunakan mirror Packagist yang lebih dekat. Anda juga bisa meningkatkan timeout Composer:

    composer config --global process-timeout 600

    Error: 500 Internal Server Error setelah install

    Kemungkinan penyebab: file .env belum di-copy dari .env.example, atau APP_KEY belum di-generate. Jalankan:

    cp .env.example .env
    php artisan key:generate

    Error: Permission denied pada folder storage

    Laravel membutuhkan akses tulis pada folder storage/ dan bootstrap/cache/. Jalankan:

    chmod -R 775 storage bootstrap/cache

    FAQ: Pertanyaan Umum tentang Instalasi Laravel 11

    Apakah Laravel 11 bisa diinstall di Windows?

    Bisa, tapi direkomendasikan menggunakan WSL (Windows Subsystem for Linux) untuk pengalaman development yang lebih mulus. Anda bisa menggunakan XAMPP atau Laragon sebagai alternatif jika tidak ingin menggunakan WSL.

    Apa perbedaan composer create-project dan Laravel installer?

    composer create-project mengunduh Laravel langsung dari Packagist — cocok untuk semua lingkungan. Laravel installer (laravel new) adalah shortcut resmi yang lebih cepat dan mendukung opsi starter kits. Keduanya menghasilkan project yang identik.

    Bagaimana cara download Laravel 11 tanpa Composer?

    Composer adalah cara resmi dan yang direkomendasikan. Jika tidak memiliki Composer, Anda bisa mengunduh zip source dari GitHub Laravel Releases, tapi Anda tetap perlu menjalankan composer install setelahnya untuk mengunduh dependensinya.

    Berapa besar ukuran project Laravel 11 setelah install?

    Project dasar Laravel 11 setelah composer install biasanya berukuran sekitar 30–50MB termasuk folder vendor/. Tanpa folder vendor (untuk deploy via Composer), ukurannya jauh lebih kecil.

    Apakah Laravel 11 membutuhkan Node.js?

    Node.js tidak wajib untuk menjalankan Laravel, tapi dibutuhkan jika Anda ingin menggunakan Vite untuk kompilasi asset frontend. Untuk aplikasi tanpa frontend build process, Node.js bisa diabaikan.

    Ingin Langsung Membangun Aplikasi Web?

    Memahami cara install Laravel 11 adalah langkah awal yang baik. Tapi membangun aplikasi web yang siap dipakai di production — lengkap dengan database, autentikasi, dashboard, dan deployment — membutuhkan pengalaman lebih. Jika Anda memiliki ide aplikasi atau website yang ingin diwujudkan, tim Arrazy Inovasi siap membantu membangun website profesional yang terstruktur dan scalable.

    Konsultasikan kebutuhan Anda terlebih dahulu — tidak ada biaya untuk diskusi awal. Hubungi kami di sini.

  • Cara Install Laravel 11: Panduan Lengkap untuk Pemula + Troubleshooting Error Umum

    Cara Install Laravel 11: Panduan Lengkap untuk Pemula + Troubleshooting Error Umum

    Ingin install Laravel 11 tapi masih bingung mulai dari PHP, Composer, sampai error yang muncul di terminal? Panduan ini dibuat untuk pemula yang ingin menjalankan project Laravel 11 dari nol tanpa lompat-lompat langkah.

    Laravel 11 masih banyak dipakai di project production. Walaupun versi Laravel terbaru sudah tersedia, memahami cara install Laravel 11 tetap penting untuk developer yang masuk ke project lama, maintenance aplikasi, atau belajar struktur Laravel modern.

    Di artikel ini kita akan bahas cara install Laravel 11 dengan Composer, menjalankannya di localhost, mengatur file .env, sampai mengatasi error umum seperti Composer tidak dikenali, versi PHP belum cocok, ekstensi PHP belum aktif, dan port 8000 sudah dipakai.

    Ringkasan Langkah Install Laravel 11

    • Pastikan PHP minimal 8.2 sudah aktif.
    • Pastikan Composer sudah terpasang dan bisa dipanggil dari terminal.
    • Buat project Laravel 11 dengan Composer.
    • Masuk ke folder project.
    • Jalankan server lokal dengan php artisan serve.
    • Buka http://127.0.0.1:8000 di browser.

    Syarat Minimal Sebelum Install Laravel 11

    Sebelum menjalankan perintah instalasi, cek dulu kebutuhan dasarnya. Ini penting karena banyak error Laravel muncul bukan dari Laravel-nya, tapi dari versi PHP atau Composer yang belum sesuai.

    1. PHP 8.2 atau Lebih Baru

    Laravel 11 membutuhkan PHP 8.2 atau lebih baru. Cek versi PHP dengan perintah:

    php --version

    Jika masih PHP 7.x atau PHP 8.0, update dulu ke PHP 8.2/8.3. Untuk Windows, kamu bisa memakai Laragon atau XAMPP versi baru. Untuk Linux, gunakan package manager sesuai distro.

    2. Composer 2.x

    Composer dipakai untuk mengunduh Laravel dan semua dependency-nya.

    composer --version

    Jika terminal menampilkan versi Composer, berarti Composer sudah siap. Jika muncul pesan composer is not recognized atau command not found, bagian troubleshooting di bawah menjelaskan solusinya.

    3. Database untuk Project Nyata

    Untuk sekadar membuka halaman awal Laravel, database belum wajib. Tapi untuk project CRUD, login, dashboard, atau aplikasi bisnis, siapkan salah satu database berikut:

    • MySQL atau MariaDB
    • PostgreSQL
    • SQLite

    Cara Install Laravel 11 dengan Composer

    Metode paling aman untuk membuat project Laravel 11 adalah menggunakan Composer create-project.

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

    Ganti nama-project dengan nama folder yang kamu inginkan. Contoh:

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

    Perintah ini akan mengunduh Laravel 11 dan dependency yang dibutuhkan. Prosesnya bisa memakan waktu beberapa menit tergantung koneksi internet.

    Alternatif: Install Laravel 11 dengan Laravel Installer

    Jika kamu sering membuat project Laravel, Laravel Installer bisa lebih praktis.

    composer global require laravel/installer
    laravel new nama-project --using=laravel/laravel:^11.0

    Namun untuk pemula, metode composer create-project biasanya lebih mudah karena tidak perlu mengatur global Composer path terlebih dahulu.

    Cara Install Laravel 11 di Windows

    Untuk Windows, kamu bisa memakai XAMPP atau Laragon. Laragon biasanya lebih nyaman untuk Laravel karena pengaturan PHP, terminal, dan virtual host lebih sederhana.

    Windows dengan Laragon

    1. Install Laragon versi terbaru.
    2. Buka Laragon, klik Terminal.
    3. Masuk ke folder kerja, biasanya C:\laragon\www.
    4. Jalankan perintah Composer:
    cd C:\laragon\www
    composer create-project laravel/laravel belajar-laravel-11 "11.*"
    cd belajar-laravel-11
    php artisan serve

    Windows dengan XAMPP

    Jika menggunakan XAMPP, pastikan versi PHP-nya minimal 8.2. Buka Command Prompt atau terminal VS Code, lalu arahkan ke folder htdocs.

    cd C:\xampp\htdocs
    composer create-project laravel/laravel belajar-laravel-11 "11.*"
    cd belajar-laravel-11
    php artisan serve

    Cara Install Laravel 11 di Linux atau Ubuntu

    Di Ubuntu, pastikan PHP, Composer, dan ekstensi PHP yang dibutuhkan sudah terpasang.

    php -v
    composer -V

    Lalu buat project Laravel:

    composer create-project laravel/laravel belajar-laravel-11 "11.*"
    cd belajar-laravel-11
    php artisan serve

    Jika nanti muncul error permission saat menulis file log atau cache, atur permission folder storage dan bootstrap/cache sesuai user web server.

    Cara Install Laravel 11 di macOS

    Untuk macOS, kamu bisa memakai Laravel Herd, Homebrew, atau setup PHP manual. Setelah PHP dan Composer siap, perintahnya sama:

    composer create-project laravel/laravel belajar-laravel-11 "11.*"
    cd belajar-laravel-11
    php artisan serve

    Menjalankan Laravel 11 di Localhost

    Setelah masuk ke folder project, jalankan:

    php artisan serve

    Jika berhasil, terminal akan menampilkan alamat seperti:

    http://127.0.0.1:8000

    Buka alamat tersebut di browser. Jika halaman welcome Laravel muncul, instalasi berhasil.

    Setup File .env dan Database

    Laravel memakai file .env untuk menyimpan konfigurasi lokal, termasuk nama aplikasi, URL, dan database.

    Biasanya file .env sudah dibuat otomatis. Jika belum ada, salin dari contoh:

    cp .env.example .env

    Lalu generate application key:

    php artisan key:generate

    Contoh konfigurasi MySQL:

    APP_NAME="Belajar Laravel 11"
    APP_ENV=local
    APP_DEBUG=true
    APP_URL=http://127.0.0.1:8000
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=belajar_laravel
    DB_USERNAME=root
    DB_PASSWORD=

    Setelah database dibuat, jalankan migration:

    php artisan migrate

    Membuka Project Laravel 11 di VS Code

    Jika memakai Visual Studio Code, buka folder project:

    code .

    Beberapa extension yang membantu:

    • PHP Intelephense
    • Laravel Blade Snippets
    • Laravel Extra Intellisense

    Extension ini tidak wajib, tapi membantu saat membaca route, controller, view Blade, dan struktur project.

    Perubahan Penting di Laravel 11

    Laravel 11 membawa struktur aplikasi yang lebih ramping dibanding beberapa versi sebelumnya. Ini penting dipahami agar kamu tidak mencari file lama yang memang sudah tidak dibuat otomatis.

    Struktur Folder Lebih Ringkas

    Beberapa konfigurasi yang dulu tersebar di file seperti app/Http/Kernel.php kini dipusatkan ke bootstrap/app.php.

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

    Route API Tidak Dibuat Otomatis

    Secara default, Laravel 11 hanya menyediakan route web dan console. Jika ingin membuat API, jalankan:

    php artisan install:api

    Troubleshooting Install Laravel 11

    Bagian ini penting karena error instalasi sering muncul dari environment lokal, bukan dari kode Laravel.

    Error: composer is not recognized atau command not found

    Penyebab: Composer belum terinstall atau path Composer belum terbaca oleh terminal.

    Solusi:

    • Install Composer dari situs resmi Composer.
    • Tutup dan buka ulang terminal setelah instalasi.
    • Cek ulang dengan composer --version.

    Error: PHP Version Tidak Sesuai

    Jika muncul pesan bahwa Laravel membutuhkan PHP 8.2 atau lebih baru, berarti PHP aktif di terminal masih versi lama.

    php --version

    Solusinya adalah update PHP atau arahkan terminal ke PHP versi baru. Di Windows, ini sering terjadi jika XAMPP lama masih masuk ke PATH.

    Error: Ekstensi PHP Belum Aktif

    Composer bisa berhenti karena ekstensi seperti zip, fileinfo, openssl, atau pdo belum aktif.

    Di XAMPP, buka file php.ini, cari ekstensi yang dibutuhkan, lalu hilangkan tanda titik koma ; di depannya. Setelah itu restart Apache atau terminal.

    Error: Port 8000 Already in Use

    Jika port 8000 sudah dipakai aplikasi lain, jalankan Laravel di port berbeda:

    php artisan serve --port=8001

    Lalu buka http://127.0.0.1:8001.

    Error: Permission Denied di Linux atau macOS

    Jika Laravel tidak bisa menulis log/cache, cek permission folder berikut:

    storage
    bootstrap/cache

    Atur permission sesuai user yang menjalankan aplikasi. Hindari asal memakai chmod 777 di server production. Untuk lokal, pastikan user kamu punya akses tulis.

    Halaman Laravel Tidak Muncul Setelah php artisan serve

    Cek beberapa hal berikut:

    • Pastikan terminal masih menjalankan php artisan serve.
    • Pastikan alamat yang dibuka sesuai dengan output terminal.
    • Jika memakai port berbeda, buka alamat port tersebut.
    • Cek apakah firewall atau antivirus memblokir koneksi lokal.

    Setelah Install Laravel 11, Belajar Apa Lagi?

    Setelah Laravel 11 berhasil jalan, lanjutkan belajar ke topik berikut:

    • Routing dan controller
    • Blade template
    • Migration dan model Eloquent
    • CRUD sederhana
    • Authentication

    Untuk langkah berikutnya, kamu bisa membaca panduan membuat controller di Laravel dan artikel apa itu Laravel Volt sebagai lanjutan ekosistem Laravel modern.

    FAQ Seputar Install Laravel 11

    Apakah Laravel 11 bisa jalan di PHP 7.4?

    Tidak. Laravel 11 membutuhkan PHP 8.2 atau lebih baru. Jika masih memakai PHP 7.4, upgrade dulu environment lokal atau gunakan Laravel versi lama yang sesuai.

    Lebih baik install Laravel 11 dengan Composer atau Laravel Installer?

    Untuk pemula, Composer create-project lebih mudah. Laravel Installer cocok jika kamu sering membuat project Laravel baru.

    Apakah Laravel 11 bisa dipakai dengan XAMPP?

    Bisa, selama versi PHP di XAMPP minimal 8.2 dan ekstensi PHP yang dibutuhkan sudah aktif.

    Kenapa Composer install Laravel lama?

    Biasanya karena koneksi internet, proses download dependency, atau antivirus yang memindai banyak file vendor. Pastikan koneksi stabil dan tunggu sampai proses selesai.

    Apakah Laravel 11 cocok untuk project baru?

    Laravel 11 masih layak dipakai, terutama jika tim atau dependency project memang menarget versi ini. Untuk project baru tanpa batasan dependency, pertimbangkan versi Laravel terbaru.

    Kesimpulan

    Cara install Laravel 11 sebenarnya cukup sederhana: siapkan PHP 8.2+, Composer, buat project dengan composer create-project, lalu jalankan php artisan serve. Yang sering membuat proses terasa sulit adalah environment lokal yang belum rapi.

    Dengan mengikuti langkah di atas dan memahami troubleshooting dasarnya, kamu bisa menjalankan Laravel 11 di Windows, Linux, atau macOS dengan lebih percaya diri.

  • Web Developer Indonesia: Panduan Lengkap untuk Karir, Layanan, dan Trend Terkini

    Web Developer Indonesia: Panduan Lengkap untuk Karir, Layanan, dan Trend Terkini

    Dalam era transformasi digital, peran web developer Indonesia menjadi bagian vital bagi perusahaan yang ingin hadir secara online dengan performa tinggi. Profesi ini tidak sekadar menulis kode, tetapi menggabungkan desain UI/UX, keamanan, optimasi performa, dan integrasi layanan untuk memenuhi kebutuhan bisnis. Artikel ini membahas peran, keterampilan, tren, serta cara memilih mitra web development yang tepat di Indonesia untuk hasil yang berkelanjutan.

    Mengapa Web Developer Indonesia Penting di Era Digital

    Di pasar Indonesia, permintaan solusi digital yang andal terus meningkat. Pelaku usaha dari UMKM hingga korporasi besar membutuhkan situs web yang responsif, cepat, dan aman. Web developer Indonesia tidak sekadar menutup kekosongan teknis; mereka juga menjadi mitra strategis dalam mengubah kebutuhan pengguna menjadi pengalaman yang bernilai. Layanan pengembangan web yang tepat dapat meningkatkan konversi, memperluas jangkauan pasar, dan mempercepat time-to-market. Solusi Pengembangan Web menunjukkan bagaimana pendekatan terintegrasi bisa diterapkan pada proyek Anda.

    Keterampilan Kunci untuk Web Developer Indonesia

    Front-End dan User Experience

    Bagian front-end memegang peran penting dalam persepsi pengguna. Web developer Indonesia yang handal harus menguasai HTML, CSS, JavaScript, serta kerangka kerja modern seperti React, Vue, atau Angular. Selain kemampuan teknis, kemampuan merancang antarmuka yang intuitif dan aksesibel menjadi nilai tambah. Layanan Pengembangan Web Unggulan membantu tim Anda menata UI/UX yang tidak hanya cantik, namun efektif meningkatkan keterlibatan pengguna.

    Back-End dan Keamanan Aplikasi

    Di balik layar, back-end menstrukturkan data, logika bisnis, dan integrasi sistem. Seorang web developer Indonesia yang berkualitas perlu memahami bahasa pemrograman server-side (misalnya Node.js, Python, PHP), arsitektur API, basis data, serta praktik keamanan. Dalam era peningkatan prevalensi serangan siber, penekanan pada otentikasi, enkripsi, dan audit kode menjadi bagian tak terpisahkan. Untuk kebutuhan konsultasi teknis, Anda bisa menghubungi Konsultasi Kebutuhan Web.

    Selain itu, keterampilan manajemen proyek dan kolaborasi tim juga penting. Penguasaan alat seperti Git, continuous integration, serta metodologi pengembangan agile membantu menjaga kualitas dan kecepatan delivery. Untuk referensi umum, sumber daya seperti W3Schools dan MDN Web Docs bisa menjadi rujukan praktis bagi para pemula maupun profesional yang ingin menyegarkan pengetahuan.

    Memilih Partner Web Development yang Andal di Indonesia

    Memilih mitra pengembangan web bukan sekadar menilai harga. Pertimbangkan rekam jejak, portofolio, metodologi, serta kemampuan komunikasi. Beberapa hal penting yang perlu diperhatikan: kualitas kode, kepatuhan pada standar industri, dokumentasi proyek, serta kemampuan untuk berkolaborasi dengan tim internal Anda. Solusi Pengembangan Web yang tepat akan menilai kebutuhan bisnis, merinci rencana kerja, dan menyediakan timeline yang realistis. Ditambah, kemudahan akses dukungan pasca-launch dan perawatan berkala juga menjadi pertimbangan jangka panjang.

    Kriteria Pemilihan dan Proses Evaluasi

    Langkah awal adalah mengevaluasi portofolio, referensi klien, serta studi kasus yang relevan dengan industri Anda. Selanjutnya, ujicoba kecil—misalnya pembuatan proof-of-concept—membantu menilai kemampuan teknis serta kemampuan berkomunikasi. Jangan lupa menilai budaya kerja serta kemampuan memenuhi tenggat waktu. Konsultasi Kebutuhan Web bisa memandu proses evaluasi sehingga Anda mendapatkan mitra yang selaras dengan tujuan bisnis.

    Tren Terbaru di Industri Web Development untuk 2025

    Tren utama mencakup web development yang lebih robust dengan fokus pada performa, aksesibilitas, dan keamanan. Penerapan Jamstack, peningkatan penggunaan headless CMS, serta optimasi gambar dan sumber daya menjadi praktik umum. Artificial Intelligence juga mulai diaplikasikan untuk meningkatkan pengalaman pengguna, personalisasi konten, dan otomatisasi pengujian. Untuk referensi lebih luas tentang praktik modern, lihat sumber daya seperti W3Schools dan MDN Web Docs.

    Seiring pertumbuhan ekosistem startup di Indonesia, peluang bagi web developer Indonesia juga meningkat. Banyak perusahaan lokal melalui outsourcing atau kemitraan jangka panjang dengan konsultan teknologi. Dengan arsitektur yang tepat, konten SEO yang relevan, dan fokus pada performa, situs yang Anda kembangkan tidak hanya menarik secara visual tetapi juga unggul dalam konversi. Jika Anda ingin memulai langkah konkret, pertimbangkan layanan terkait pengembangan web melalui mitra tepercaya.

    Untuk pembaca yang sedang merencanakan karir, jalur untuk menjadi web developer Indonesia melibatkan pembelajaran berkelanjutan. Portofolio yang kuat, kemampuan problem solving, dan pengetahuan tentang keamanan menjadi aset utama. Pelatihan online, kursus proyek nyata, serta kolaborasi dengan komunitas lokal dapat mempercepat peningkatan keahlian. Sumber belajar praktis seperti W3Schools maupun MDN Web Docs bisa menjadi referensi yang bermanfaat untuk pemula maupun profesional.

    Penutup: Menjadi web developer Indonesia berarti tidak hanya menulis kode, tetapi juga memahami konteks bisnis, user experience, dan dinamika pasar digital. Jika Anda sedang merencanakan proyek digital yang ambisius, solusi dari mitra tepercaya bisa menjadi langkah pertama yang tepat. Temukan bagaimana pendekatan terstruktur, tim ahli, dan dukungan berkelanjutan dapat membawa situs Anda ke performa terbaik dan ROI yang lebih tinggi. Untuk referensi ekosistem global, lihat sumber belajar MDN Web Docs atau W3Schools.