{"id":42637,"date":"2025-01-13T14:19:02","date_gmt":"2025-01-13T07:19:02","guid":{"rendered":"\/tutorial\/?p=42637"},"modified":"2025-12-18T23:28:09","modified_gmt":"2025-12-18T16:28:09","slug":"cara-menggunakan-laravel","status":"publish","type":"post","link":"\/id\/tutorial\/cara-menggunakan-laravel","title":{"rendered":"Cara menggunakan Laravel bagi pemula untuk belajar dari awal"},"content":{"rendered":"<p>Laravel adalah framework PHP open-source yang populer, salah satunya karena syntax yang mudah digunakan. Framework ini sering digunakan oleh developer PHP untuk membuat berbagai aplikasi web, seperti toko online, media sosial, dan CMS.<\/p><p>Di tutorial Laravel ini, kami akan menjelaskan berbagai hal tentang framework ini, mulai dari penyiapannya hingga teknik-teknik tingkat lanjut. Anda juga akan mempelajari konsep lainnya, seperti perintah PHP Artisan dan penanganan error.<\/p><p>Lanjutkan membaca artikel ini untuk mulai belajar Laravel yuk!<\/p><h2 class=\"wp-block-heading\" id=\"h-mengenal-laravel-dan-setupnya\">Mengenal Laravel dan setupnya<\/h2><p>Framework seperti Laravel menyediakan tool dan resource siap pakai bagi para developer untuk membuat aplikasi tanpa harus menulis semua kodenya dari nol. Contohnya, Anda bisa menginstal paket Bagisto untuk menambahkan fungsi toko online, seperti manajemen inventaris.<\/p><p>Laravel sangat populer karena fitur-fiturnya. Kami akan menjelaskannya secara mendetail di bawah ini:<\/p><ul class=\"wp-block-list\">\n<li><strong>Syntax yang elegan <\/strong>&ndash; Anda bisa menggunakan kode PHP yang lebih sederhana, yang lebih efisien dan mudah dibaca untuk mempermudah proses pengembangan.<\/li>\n\n\n\n<li><strong>Arsitektur MVC <\/strong>&ndash; Arsitektur Model-View-Controller di Laravel menyediakan struktur yang lebih jelas untuk komponen aplikasi Anda.<\/li>\n\n\n\n<li><strong>PHP Artisan <\/strong>&ndash; Tool command-line yang mempermudah tugas-tugas kompleks selama pengembangan, seperti update database atau pembuatan komponen.<\/li>\n\n\n\n<li><strong>Eloquent ORM <\/strong>&ndash; Sistem mapping yang mempermudah komunikasi database melalui metode yang didasarkan pada objek (object-oriented).<\/li>\n<\/ul><p>Anda bisa <a href=\"\/id\/tutorial\/install-laravel-di-ubuntu\">menginstal Laravel di Ubuntu<\/a>, CentOS, dan distribusi Linux populer lainnya. Namun, Anda harus mengonfigurasi beberapa komponen software terlebih dahulu, termasuk runtime PHP, Composer, dan Apache.<\/p><p>Apabila mencari cara yang lebih mudah, Anda bisa mendapatkan <a href=\"\/id\/hosting-vps\">paket VPS hosting<\/a> kami di Hostinger. Cukup selesaikan proses onboarding yang mudah, lalu Anda bisa menginstal Laravel melalui <strong>OS &amp; Panel<\/strong> &rarr; <strong>Sistem Operasi<\/strong> &rarr; <strong>Aplikasi<\/strong>.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/id\/hosting-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29630\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2023\/02\/ID-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>Selain itu, Anda harus menyiapkan <a href=\"\/id\/tutorial\/integrated-development-environment-adalah\">IDE (Integrated Development Environment)<\/a> di komputer untuk menulis kode aplikasi.<\/p><p>Untuk <a href=\"\/id\/tutorial\/cara-deploy-laravel-ke-vps\">men-deploy aplikasi Laravel di VPS<\/a>, Anda membutuhkan <strong>Git <\/strong>atau software automasi seperti <strong>Jenkins.<\/strong><\/p><p>\n\n\n<div><p class=\"important\"><strong>Penting!<\/strong> Beberapa konsep mungkin berbeda tergantung pada versi Laravel Anda. Untuk tutorial ini, kami akan menggunakan Laravel <strong>11.X<\/strong>.<\/p><\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-memahami-arsitektur-mvc\">Memahami arsitektur MVC<\/h2><p>Salah satu konsep terpenting Laravel adalah arsitektur MVC. Singkatnya, menggunakan model ini, developer bisa membagi aplikasi menjadi tiga komponen untuk mengelola kode, menentukan prioritas, dan mengisolasi masalah dengan lebih mudah.<\/p><p><strong>Komponen model<\/strong><\/p><p>Komponen model merepresentasikan logika bisnis dan penyimpanan aplikasi Anda. Komponen ini bertugas untuk menangani operasi database, termasuk menulis dan mengambil informasi spesifik dari back-end berdasarkan permintaan pengguna.<\/p><p>Laravel bergantung pada Eloquent ORM untuk menangani operasi yang berhubungan dengan model, yang menggunakan object-oriented approach. Dengan sistem ini, proses manipulasi data menjadi jauh lebih cepat dan lebih fleksibel daripada menggunakan SQL.<\/p><p><strong>Komponen view<\/strong><\/p><p>Lapisan view atau tampilan adalah area di aplikasi Anda yang bisa dilihat oleh pengguna dan menerima interaksi dari mereka di layar perangkatnya. Lapisan ini mencakup elemen-elemen seperti menu drop-down, kotak teks, dan kolom formulir.<\/p><p>Untuk mempermudah proses pengembangan komponen view, Laravel menyediakan sistem Blade yang memungkinkan Anda menggabungkan PHP ke dalam template HTML. Dengan fitur ini, Anda bisa membuat kode yang bisa digunakan kembali dan menampilkan data dari back-end dengan lebih mudah.<\/p><p><strong>Komponen controller<\/strong><\/p><p>Controller menghubungkan dua komponen sebelumnya dalam aplikasi Laravel Anda. Controller mengambil permintaan data dari lapisan model dan menyajikan informasi yang telah diproses di front-end ke komponen view.<\/p><p>Anda bisa menggunakan berbagai metode untuk mengatur controller agar berinteraksi dengan data dalam cara yang berbeda. Misalnya, <strong>index <\/strong>diatur agar mengambil data dari database, sementara <strong>store <\/strong>menyisipkan resource baru.<\/p><h2 class=\"wp-block-heading\" id=\"h-membuat-route-dan-url\">Membuat route dan URL<\/h2><p>Saat pengguna mengakses aplikasi Anda, mereka mengirim permintaan yang akan ditangani oleh controller. <strong>Route<\/strong> di Laravel kemudian mengarahkan permintaan tersebut melalui URL tertentu menuju controller yang sesuai, lalu mengembalikan data ke view.<\/p><p>Anda bisa membuat beberapa route Laravel berdasarkan metode HTTP permintaan tersebut, seperti GET, POST, PUT, DELETE, dan PATCH. Secara default, semuanya berada dalam file <strong>web.php <\/strong>di folder <strong>routes <\/strong>pada direktori proyek Laravel Anda.<\/p><p>Untuk mulai membuat route, panggil <a href=\"https:\/\/laravel.com\/docs\/11.x\/facades\" target=\"_blank\" rel=\"noopener\">facade<\/a> atau fungsi helper <strong>Route<\/strong> di bagian atas file <strong>web.php<\/strong> dengan menambahkan baris berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">use Illuminate\\Support\\Facades\\Route;<\/pre><p>Kemudian, tentukan route Anda. Sebagai contoh, kode berikut ini akan menangani pengguna yang mengirimkan permintaan HTTP <strong>GET<\/strong> ke URL <strong>domain.tld\/welcome<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Route::get('\/welcome', function () {\n   \/\/Write your controller logic here;\n});<\/pre><p>Apabila ingin mengatur route untuk controller tertentu, Anda juga bisa memanggil facade miliknya dan menambahkan route seperti berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">use App\\Http\\Controllers\\HomeController;\n\nRoute::get('\/home', [HomeController::class, 'index']);<\/pre><p>Dalam contoh di atas, kami merutekan permintaan dengan metode <strong>GET<\/strong> dari <strong>domain.tld\/home <\/strong>ke controller <strong>HomeController<\/strong>, yang akan menanganinya dengan metode <strong>INDEX. <\/strong>Syntax <strong>::class <\/strong>memungkinkan Anda menggunakan controller tanpa menentukan path facade lengkapnya.<\/p><p>Laravel bisa memproses permintaan melalui middleware sebelum meneruskannya ke controller untuk pemrosesan tambahan, seperti logging atau autentikasi. Mari lihat contoh berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Route::get('\/welcome', function () {\n    return view('welcome');\n})-&gt;middleware('log.request');<\/pre><p>Jangan lupa, Anda harus membuat middleware melalui PHP Artisan. Kami menjelaskan caranya di bagian teknik tingkat lanjut Laravel, di bagian bawah artikel ini.<\/p><h2 class=\"wp-block-heading\" id=\"h-menggunakan-controller\">Menggunakan controller<\/h2><p>Controller mengelompokkan permintaan yang memiliki logika sama ke dalam sebuah class. Dengan begitu, pemrosesannya menjadi lebih efisien karena Anda bisa melakukannya secara massal dengan menggunakan satu handler.<\/p><p>Sebagai contoh, Anda bisa membuat HomeController untuk memproses semua permintaan yang datang dari URL <strong>\/home<\/strong>. Secara default, controller berada di <strong>app\/Http\/Controllers.<\/strong> Untuk menyiapkannya, jalankan perintah PHP artisan berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:controller ControllerName<\/pre><p>Kemudian, tentukan metode penanganan permintaan di dalam file controller yang baru. Sebagai contoh, kode berikut ini menangani permintaan <strong>GET <\/strong>yang dikirim melalui route <strong>product\/id<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Http\\Controllers;\n\nuse App\\Models\\Product;\nuse Illuminate\\Http\\Request;\n\nclass ProductController extends Controller\n{\n    \/\/ GET \/product\/{id}\n    public function show($id)\n    {\n        $product = Product::find($id);\n        \n        if (!$product) {\n            abort(404); \/\/ Return a 404 error if the product is not found\n        }\n\n        return view('products.show', compact('product')); \/\/ Return a view with the product data\n    }\n}<\/pre><p>Untuk menangani operasi CRUD (Create, Read, Update, Delete) umum, Anda bisa menyiapkan controller resource dengan serangkaian metode tertentu. Berikut ini perintahnya:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:controller ControllerName --controller<\/pre><h2 class=\"wp-block-heading\" id=\"h-membuat-view-dengan-blade-templating-engine\">Membuat view dengan Blade templating engine<\/h2><p><a href=\"https:\/\/laravel.com\/docs\/11.x\/blade\" target=\"_blank\" rel=\"noopener\">Blade templating engine<\/a> memungkinkan integrasi PHP yang lancar ke HTML menggunakan syntax yang lebih sederhana. Sistem ini bisa mempermudah proses pembuatan komponen view untuk aplikasi Anda.<\/p><p>Untuk membuat view menggunakan Blade, buat file dengan ekstensi <strong>.blade.php <\/strong>di direktori <strong>resources\/views <\/strong>dalam proyek Laravel Anda.<\/p><p>Struktur kodenya sama dengan HTML, tapi dengan syntax tambahan untuk PHP. Misalnya, Anda bisa menyisipkan sebuah variabel seperti ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;h1&gt;{{ $title }}&lt;\/h1&gt;<\/pre><p>Pada contoh di atas, Laravel meneruskan nilai variabel PHP <strong>$title <\/strong>ke komponen view, lalu menampilkannya kepada pengguna.<\/p><p>Anda juga bisa menambahkan directive yang memanipulasi elemen HTML menggunakan fungsi PHP. Sebagai contoh, <strong>@if <\/strong>memungkinkan Anda menampilkan konten tertentu kalau suatu kondisi terpenuhi, seperti berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@if($user-&gt;'Username')\n  &lt;h1&gt;Glad to see you, Username!&lt;\/h1&gt;\n@endif<\/pre><p>Agar kode bisa digunakan ulang dengan lebih mudah, Blade menyediakan fitur pewarisan template yang bisa Anda manfaatkan untuk membuat tata letak utama dan menambahkan komponen yang lebih kecil, yang disebut <strong>child view<\/strong>,<strong> <\/strong>secara terpisah. Anda bisa melakukannya dengan menggunakan directive <strong>@extends<\/strong>, <strong>@section<\/strong>, dan <strong>@yield.<\/strong><\/p><p>Sebagai contoh, kami punya template master dengan kode berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;title&gt;@yield('websitetitle')&lt;\/title&gt;<\/pre><p>Directive <strong>@yield <\/strong>adalah placeholder untuk konten dari child view yang ditandai dengan <strong>@section<\/strong>.<strong> <\/strong>Sebagai contoh, kode berikut ini akan menyisipkan <strong>Website Keren <\/strong>ke dalam tag judul:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@section('websitetitle', 'Your Awesome Website')<\/pre><p>Terakhir, tambahkan directive <strong>@extends <\/strong>ke child view untuk menjelaskan file mana yang harus digunakan oleh master template untuk melengkapi kontennya.<\/p><h2 class=\"wp-block-heading\" id=\"h-mengelola-database-dengan-eloquent-orm\">Mengelola database dengan Eloquent ORM<\/h2><p><a href=\"https:\/\/laravel.com\/docs\/11.x\/eloquent\" target=\"_blank\" rel=\"noopener\">Eloquent ORM<\/a> memungkinkan aplikasi Laravel Anda berinteraksi dengan tabel database menggunakan kode yang lebih ringkas dibandingkan dengan SQL tradisional.<\/p><p>Dengan Eloquent, Anda tidak perlu memanipulasi data secara langsung menggunakan tabel, karena Laravel akan menentukan model untuk mempermudah operasi CRUD.<\/p><p>Anda bisa membuat model Eloquent baru di mana pun dalam folder <strong>app <\/strong>proyek Laravel Anda, karena file <strong>Composer.json <\/strong>akan menemukannya secara otomatis. Apabila Anda tidak menentukan direktori, Laravel akan menggunakan direktori <strong>app\/Models <\/strong>default.<\/p><p>Untuk membuat model baru, jalankan perintah PHP Artisan seperti ini. Ganti <strong>Name <\/strong>dengan nama model yang Anda inginkan:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:model Name<\/pre><p>Secara default, Laravel akan menganggap bahwa tabel yang sesuai adalah nama model Anda dalam bentuk jamak. Misalnya, perintah berikut ini akan menetapkan model <strong>Post <\/strong>ke kolom database <strong>posts<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:model Post<\/pre><p>Sekarang, mari tulis kode Eloquent di dalam controller Anda untuk operasi CRUD. Contoh kode berikut ini akan mengambil akun dari model <strong>User <\/strong>dengan status <strong>Active<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$activeUsers = User::where('status', 'active')-&gt;get();<\/pre><p>Tanpa Eloquent, Anda perlu menulis kueri SQL seperti ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$activeUsers = DB::select('SELECT * FROM users WHERE status = ?', ['active']);<\/pre><p>Anda juga bisa membuat relasi antardata dalam model Eloquent yang berbeda untuk pengelolaan data yang lebih efisien. Berikut relasi yang didukung:<\/p><ul class=\"wp-block-list\">\n<li><strong>One-to-one <\/strong>&ndash; Sebuah data dikaitkan dengan satu data lainnya dalam model yang berbeda. Misalnya, username dengan user ID-nya.<\/li>\n\n\n\n<li><strong>One-to-many <\/strong>&ndash; Sebuah data disambungkan ke beberapa nilai dari satu model. Misalnya, satu pengguna e-Commerce dikaitkan dengan beberapa faktur pesanan mereka.<\/li>\n\n\n\n<li><strong>Many-to-many <\/strong>&ndash; Beberapa data disambungkan dengan banyak data dari tabel lain. Contoh relasi ini adalah produk dan tag.<\/li>\n<\/ul><p>Laravel juga memiliki fitur migrasi yang membantu menjaga konsistensi antardatabase dalam beberapa sistem atau versi yang berbeda. Dengan fitur ini, Anda bisa membuat banyak kolom dalam model baru dengan sekali eksekusi.<\/p><p>Untuk membuat file migrasi bagi sebuah tabel, jalankan perintah berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:migration create_example_table<\/pre><p>Anda juga bisa membuat file migrasi selagi menyiapkan model dengan menambahkan opsi <strong>-m<\/strong> atau <strong>-migration<\/strong> seperti ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:migration create_example_table<\/pre><p>Laravel akan membuat file migrasi di dalam direktori <strong>database\/migrations<\/strong>. Di dalamnya, tentukan dua perintah, yaitu <strong>up() <\/strong>dan <strong>down()<\/strong>.<\/p><p>Fungsi <strong>up() <\/strong>menentukan perubahan yang harus dilakukan ketika Anda menjalankan perintah <strong>PHP Artisan migrate<\/strong>, sedangkan <strong>down() <\/strong>menentukan metode untuk mengembalikan modifikasi.<\/p><p>Berikut contoh kode lengkapnya:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\nuse Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass CreatePostsTable extends Migration\n{\n    \/**\n     * Run the migrations.\n     *\n     * @return void\n     *\/\n    public function up()\n    {\n            Schema::create('posts', function (Blueprint $table) {\n            $table-&gt;id(); \/\/ Auto-incrementing primary key\n            $table-&gt;string('title'); \/\/ Column for post title\n            $table-&gt;text('body'); \/\/ Column for post content\n            $table-&gt;timestamps(); \/\/ Created and updated timestamps\n        });\n    }\n\n    \/**\n     * Reverse the migrations.\n     *\n     * @return void\n     *\/\n    public function down()\n    {\n        Schema::dropIfExists('posts');\n    }\n}<\/pre><p>Apabila Anda menjalankan perintah berikut, fungsi-fungsi dalam <strong>up() <\/strong>akan berjalan, membuat kolom <strong>id<\/strong>, <strong>string<\/strong>, <strong>text<\/strong>, dan <strong>timestamps <\/strong>di dalam tabel <strong>posts.<\/strong><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan migrate<\/pre><p>Untuk mengembalikan perubahan, gunakan perintah berikut ini, yang akan menjalankan fungsi <strong>down()<\/strong> dan menghapus tabel <strong>posts<\/strong> yang baru saja dibuat:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan migrate:rollback<\/pre><p>Umumnya, developer dan administrator sistem melakukan migrasi database kalau mereka perlu memodifikasi skemanya, baik selama pengujian, deployment, atau menyiapkan sistem baru.<\/p><h2 class=\"wp-block-heading\" id=\"h-menerapkan-autentikasi-dan-otorisasi\">Menerapkan autentikasi dan otorisasi<\/h2><p>Anda perlu menerapkan mekanisme autentikasi dan otorisasi yang tepat demi keamanan aplikasi web Anda. Namun, membuat sistem ini secara manual mungkin akan cukup sulit.<\/p><p>Nah, Laravel menyediakan toolkit yang bisa Anda manfaatkan untuk mempermudah prosesnya.<\/p><p><strong>Autentikasi Laravel<\/strong><\/p><p>Laravel menggunakan <strong>guards <\/strong>untuk menentukan metode autentikasi pengguna dan <strong>providers<\/strong> untuk mengambil informasi akun dari penyimpanan persisten, seperti database.<\/p><p>Logika autentikasi berada di dalam file <strong>config\/auth.php<\/strong>. Tampilannya akan seperti ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">'guards' =&gt; [\n    'web' =&gt; [\n        'driver' =&gt; 'session',\n        'provider' =&gt; 'users',\n    ],\n'providers' =&gt; [\n    'users' =&gt; [\n        'driver' =&gt; 'eloquent',\n        'model' =&gt; App\\Models\\User::class,\n    ],\n],<\/pre><p>Pada contoh di atas, <strong>guards<\/strong> digunakan untuk mengautentikasi permintaan ke aplikasi web menggunakan metode sesi berbasis <a href=\"\/id\/tutorial\/cookies-adalah\">cookie<\/a>.<\/p><p>Metode ini menggunakan <strong>provider<\/strong> yang disebut <strong>users<\/strong>, yang menggunakan mekanisme Eloquent ORM untuk mengambil data akun dari model <strong>user<\/strong>.<\/p><p>Laravel juga menawarkan <a href=\"https:\/\/laravel.com\/docs\/11.x\/starter-kits\" target=\"_blank\" rel=\"noopener\">starter kit Breeze<\/a><strong> <\/strong>dan <strong>Jetstream<\/strong>, yang menyediakan sistem autentikasi siap pakai. Kami menyarankan Anda untuk menginstalnya agar bisa lebih memahami proses dasar implementasi kode, yang akan membantu Anda menyiapkan logika kustom di kemudian hari.<\/p><p><strong>Otorisasi Laravel<\/strong><\/p><p>Otorisasi Laravel menggunakan dua komponen: <strong>gate <\/strong>dan <strong>policy<\/strong>.<\/p><p><strong>Gate<\/strong> memeriksa apakah pengguna memiliki izin untuk melakukan tindakan tertentu sehingga cocok untuk tindakan yang hanya berlaku satu kali.<\/p><p>Sementara itu, <strong>policy<\/strong> menentukan logika otorisasi untuk tindakan kolektif dalam model yang sama, dan akan lebih berguna untuk mengotorisasi proses yang lebih rumit.<\/p><p>Anda bisa menggunakan salah satu atau keduanya, tergantung pada kebutuhan aplikasi Laravel Anda.<\/p><p>Untuk menghubungkan gate, gunakan metode <strong>boot<\/strong> di dalam <strong>App\/Providers\/AppServiceProvider<\/strong>.<\/p><p>Contohnya, berikut ini kami membandingkan user ID milik akun yang ingin mengedit postingan dan penulisnya:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">use App\\Models\\Post;\nuse App\\Models\\User;\nuse Illuminate\\Support\\Facades\\Gate;\n\npublic function boot(): void\n{\n    Gate::define('update-post', function (User $user, Post $post) {\n        return $user-&gt;id === $post-&gt;user_id;\n    });\n}<\/pre><p>Kemudian, Anda bisa memanggil gate ke controller atau template Blade dan menentukan respons berdasarkan hasil otorisasi.<\/p><p>Misalnya, Anda bisa mengatur aplikasi agar menampilkan pesan tertentu ketika menemukan error validasi. Sementara itu, buat policy menggunakan perintah PHP Artisan.<\/p><p>Mari lihat contohnya dalam kode berikut ini, yang akan membuat policy bernama <strong>PostPolicy<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:policy PostPolicy<\/pre><p>Kemudian, hubungkan dengan menggunakan metode <strong>boot <\/strong>di dalam <strong>AuthServiceProvider.php<\/strong>. Dalam contoh ini, kami menetapkan policy ke model <strong>Post<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">use App\\Models\\Post;\nuse App\\Models\\User;\nuse Illuminate\\Support\\Facades\\Gate;\n\npublic function boot(): void\n{\n    Gate::define('update-post', function (User $user, Post $post) {\n        return $user-&gt;id === $post-&gt;user_id;\n    });\n}<\/pre><p>Sekarang Anda bisa menulis logika otorisasi di dalam file policy yang baru Anda, yang dalam tutorial ini adalah <strong>PostPolicy.php<\/strong>. Untuk menerapkannya, panggil fungsi tersebut ke controller Anda dan tentukan responsnya.<\/p><h2 class=\"wp-block-heading\" id=\"h-memproses-formulir-dan-validasi\">Memproses formulir dan validasi<\/h2><p>Laravel bisa berkomunikasi dan mengotorisasi database secara efisien, yang membantu Anda membuat formulir dengan lebih mudah.<\/p><p>Sebagai contoh, mari kita buat formulir yang menyimpan username dan alamat email. Mulailah dengan membuat komponen view menggunakan Blade.<\/p><p>Berikut kodenya:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;Simple Form&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Submit Your Info&lt;\/h1&gt;\n\n    @if (session('success'))\n        &lt;div style=\"color: green;\"&gt;{{ session('success') }}&lt;\/div&gt;\n    @endif\n\n    @if ($errors-&gt;any())\n        &lt;div style=\"color: red;\"&gt;\n            &lt;ul&gt;\n                @foreach ($errors-&gt;all() as $error)\n                    &lt;li&gt;{{ $error }}&lt;\/li&gt;\n                @endforeach\n            &lt;\/ul&gt;\n        &lt;\/div&gt;\n    @endif\n\n    &lt;form action=\"{{ route('form.submit') }}\" method=\"POST\"&gt;\n        @csrf\n        &lt;label for=\"name\"&gt;Name:&lt;\/label&gt;\n        &lt;input type=\"text\" id=\"name\" name=\"name\" required&gt;\n\n        &lt;label for=\"email\"&gt;Email:&lt;\/label&gt;\n        &lt;input type=\"email\" id=\"email\" name=\"email\" required&gt;\n        &lt;button type=\"submit\"&gt;Submit&lt;\/button&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre><p>Kemudian, tambahkan route ke dalam <strong>web.php<\/strong> untuk menentukan controller yang akan menangani pengiriman formulir.<\/p><p>Dalam hal ini, kita membutuhkan dua route untuk metode <strong>GET <\/strong>dan <strong>POST<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">use App\\Http\\Controllers\\FormController;\n\nRoute::get('\/form', [FormController::class, 'show'])-&gt;name('form.show');\nRoute::post('\/form-submit', [FormController::class, 'submit'])-&gt;name('form.submit');<\/pre><p>Sekarang, mari buat controller menggunakan perintah berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:controller FormController<\/pre><p>Tambahkan kode berikut ke file <strong>FormController.php <\/strong>untuk menyiapkan controller Anda, yang akan memvalidasi input pengguna dan membandingkan data dengan entri database:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Models\\User; \/\/ Make sure to import your User model\n\nclass FormController extends Controller\n{\n    public function show()\n    {\n        return view('simple-form');\n    }\n\n    public function submit(Request $request)\n    {\n        \/\/ Validate input\n        $request-&gt;validate([\n            'name' =&gt; 'required|string|max:255',\n            'email' =&gt; 'required|email|max:255|exists:users,email', \/\/ Check if email exists\n        ]);\n\n        return redirect()-&gt;route('form.show')-&gt;with('success', 'Form submitted successfully!');\n    }\n}<\/pre><p>Seperti yang ditentukan dalam file Blade, kalau username dan email yang diinput ada dalam database, tampilan front-end Anda akan menampilkan pesan sukses. Kalau tidak, maka akan muncul error.<\/p><p>Apabila memerlukan pemeriksaan yang lebih menyeluruh, Anda bisa menerapkan sistem otorisasi menggunakan gate dan policy.<\/p><h2 class=\"wp-block-heading\" id=\"h-teknik-teknik-laravel-tingkat-lanjut\">Teknik-teknik Laravel tingkat lanjut<\/h2><p>Di bagian ini, kami akan menjelaskan beberapa teknik tingkat lanjut untuk menggunakan Laravel. Dengan mempelajari tutorial Laravel berikut ini, Anda bisa meningkatkan efisiensi pengembangan aplikasi web Anda.<\/p><h3 class=\"wp-block-heading\" id=\"h-menggunakan-command-line-php-artisan-laravel\">Menggunakan command-line PHP Artisan Laravel<\/h3><p><a href=\"https:\/\/laravel.com\/docs\/11.x\/artisan\" target=\"_blank\" rel=\"noopener\">PHP Artisan<\/a> adalah aplikasi command-line yang memungkinkan Anda berinteraksi dengan framework aplikasi, mengotomatiskan tugas-tugas kompleks, dan mengelola resource untuk proses pengembangan yang lebih efisien.<\/p><p>Aplikasi ini sudah dikonfigurasikan secara default dengan penginstalan Laravel Anda. Untuk melihat daftar perintah PHP Artisan yang tersedia, jalankan kode berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan list<\/pre><p>Kemudian, Anda bisa menggunakan argumen <strong>help <\/strong>untuk melihat panduan perintah tertentu, termasuk opsi yang bisa diterima.<\/p><p>Sebagai contoh, jalankan perintah berikut ini untuk memeriksa utilitas <strong>migrate<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan help migrate<\/pre><p>Salah satu perintah PHP Artisan yang paling sering digunakan adalah <strong>make<\/strong>, yang berfungsi untuk membuat berbagai item, termasuk perintah lain, controller, dan middleware.<\/p><p>Berikut syntaxnya:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:item [option]<\/pre><p>Perintah penting lainnya adalah <strong>serve<\/strong>, yang berguna untuk men-deploy aplikasi Laravel:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan serve<\/pre><p>Anda juga bisa mengelola cache dengan perintah PHP artisan. Misalnya, gunakan skrip berikut ini untuk menghapus cache perutean Laravel Anda:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan route:clear<\/pre><h3 class=\"wp-block-heading\" id=\"h-middleware\">Middleware<\/h3><p><a href=\"https:\/\/laravel.com\/docs\/11.x\/middleware\" target=\"_blank\" rel=\"noopener\">Middleware di Laravel<\/a> adalah software yang menjadi penghubung antara aplikasi Anda dan klien.<\/p><p>Software ini menengahi permintaan pengguna sebelum mencapai server Anda, serta biasanya digunakan untuk memfilter traffic dan logging.<\/p><p>Laravel menyediakan middleware siap pakai yang bisa langsung digunakan dalam basis kode aplikasi Anda. Secara default, middleware ini berada di dalam <strong>aplikasi\/http\/middleware <\/strong>proyek Anda.<\/p><p>Untuk membuat middleware baru, jalankan perintah PHP Artisan berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:middleware-name<\/pre><p>Kemudian, tulis skrip PHP Anda untuk menentukan logika penanganan. Setelah selesai, Anda bisa menerapkan middleware ke route tertentu atau secara global, yang akan mencegat semua permintaan dan metode dari HTTP.<\/p><p>Untuk menerapkan middleware secara global, tambahkan software ini ke properti <strong>$middleware <\/strong>di dalam <strong>app\/Http\/Kernel.php<\/strong>. Apabila menangani beberapa layanan middleware, Anda bisa mengelompokkannya untuk mempermudah perutean.<\/p><p>Untuk melakukannya, hubungkan middleware di bawah properti <strong>$middlewareGroups <\/strong>di dalam file <strong>Kernel.php<\/strong>. Perhatikan contoh berikut ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">protected $middlewareGroups = [\n    'custom' =&gt; [\n        \\App\\Http\\Middleware\\EncryptCookies::class,\n        \\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse::class,\n]<\/pre><p>Dalam cuplikan tersebut, grup <strong>custom <\/strong>berisi dua komponen middleware. Anda bisa memanggil keduanya secara bersamaan ke dalam sebuah route menggunakan nama grup seperti ini:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Route::get('\/example', function () {\n    return 'This route uses the custom middleware group.';\n})-&gt;middleware('custom');<\/pre><h3 class=\"wp-block-heading\" id=\"h-penanganan-error-dan-debugging\">Penanganan error dan debugging<\/h3><p>Laravel dilengkapi dengan mekanisme penanganan error yang membantu Anda menangani masalah. Untuk menyiapkan handler pengecualian kustom, tambahkan logikanya di dalam class <strong>App\\Exceptions\\Handler<\/strong>.<\/p><p>Anda bisa menggunakan berbagai metode untuk menyesuaikan cara Laravel menampilkan pengecualian. Sebagai contoh, kode berikut ini menggunakan <strong>render()<\/strong> untuk menampilkan error spesifik sebagai respons HTTP:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public function render($request, Throwable $exception)\n{\n    if ($exception instanceof CustomException) {\n        return response()-&gt;view('errors.custom', [], 500);\n    }\n\n    return parent::render($request, $exception);\n}<\/pre><p>Metode lainnya adalah <strong>report()<\/strong>, yang memodifikasi cara Laravel mencatat error di direktori <strong>storage\/logs<\/strong>.<strong> <\/strong>Anda juga bisa membuat class pengecualian kustom dengan melengkapi class <strong>Exception <\/strong>dasar, seperti pada kode berikut:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Exceptions;\n\nuse Exception;\n\nclass CustomException extends Exception\n{\n    \/\/ Custom logic or properties\n}<\/pre><p>Selain membantu menemukan pengecualian dengan lebih efisien, Laravel menyediakan tool untuk mendebug error. Sebagai contoh, Anda bisa menggunakan <strong>dd() <\/strong>dan <strong>dump() <\/strong>untuk memeriksa nilai sebuah variabel sehingga Anda bisa melihat apakah outputnya sudah benar:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">dd($variable)<\/pre><p>Atau, gunakan solusi pihak ketiga, seperti <strong>Laravel Debugbar<\/strong>, yang menyediakan antarmuka pengguna grafis di web browser dan menampilkan informasi penting tentang aplikasi Anda.<\/p><p>Sebagai contoh, Anda bisa memeriksa route, kueri, dan permintaan.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1024\" height=\"207\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/01\/ui-laravel-debugbar.png\/public\" alt=\"tampilan user interface laravel debugbar\" class=\"wp-image-42640\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/01\/ui-laravel-debugbar.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/01\/ui-laravel-debugbar.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/01\/ui-laravel-debugbar.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/37\/2025\/01\/ui-laravel-debugbar.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p>Anda bisa menginstal tool ini melalui <strong>Composer<\/strong>. Apabila ingin mempelajarinya lebih lanjut, silakan kunjungi <a href=\"https:\/\/github.com\/barryvdh\/laravel-debugbar\" target=\"_blank\" rel=\"noopener\">repositori GitHub Laravel Debugbar<\/a>.<\/p><h3 class=\"wp-block-heading\" id=\"h-membuat-restful-api-dengan-laravel\">Membuat RESTful API dengan Laravel<\/h3><p>RESTful <a href=\"\/id\/tutorial\/api-adalah\">application programming interface (API)<\/a> memungkinkan aplikasi berkomunikasi menggunakan metode HTTP seperti <strong>GET<\/strong>, <strong>POST<\/strong>, dan <strong>DELETE<\/strong>.<\/p><p>Menggunakan API ini, Anda bisa mengintegrasikan layanan, berbagi data, atau menyiapkan tool pihak ketiga dengan lebih mudah.<\/p><p>Mekanisme perutean dan pengontrolan Laravel yang canggih membuatnya cocok untuk mengembangkan RESTful API.<\/p><p>Berikut tutorial Laravel untuk membangun RESTful API:<\/p><ol class=\"wp-block-list\">\n<li>Buka file <strong>routes\/api.php<\/strong>. File ini disertakan dengan penginstalan Laravel Anda secara default.<\/li>\n\n\n\n<li>Tentukan route untuk setiap endpoint API dengan menentukan metode HTTP mana yang sesuai dengan suatu tindakan. Contohnya seperti ini:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">use App\\Http\\Controllers\\ItemController;\nRoute::get('\/items', [ItemController::class, 'index']);<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Buat controller untuk menangani permintaan dari semua endpoint:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:controller ItemController<\/pre><ol start=\"4\" class=\"wp-block-list\">\n<li>Tentukan metode yang akan digunakan oleh <strong>ItemController <\/strong>untuk menangani operasi CRUD:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Models\\Item;\n\nclass ItemController extends Controller\n{\n    \/\/ GET \/items\n    public function index()\n    {\n        return Item::all();\n    }<\/pre><ol start=\"5\" class=\"wp-block-list\">\n<li>Buat file migrasi database dan model untuk menyimpan data aplikasi bagi resource <strong>Item<\/strong>:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan make:model Item -m<\/pre><ol start=\"6\" class=\"wp-block-list\">\n<li>Atur struktur tabel database <strong>item <\/strong>Anda dengan menambahkan kode berikut:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public function up()\n{\n    Schema::create('items', function (Blueprint $table) {\n        $table-&gt;id();\n        $table-&gt;string('name');\n        $table-&gt;timestamps();\n    });\n}<\/pre><ol start=\"7\" class=\"wp-block-list\">\n<li>Jalankan migrasi untuk menyiapkan tabel database:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php artisan migrate<\/pre><p>Sekarang, periksa apakah endpoint API Anda sudah berfungsi tanpa masalah dengan mengirimkan permintaan <strong>GET <\/strong>menggunakan <a href=\"\/id\/tutorial\/apa-itu-curl\">cURL<\/a> atau <strong>Postman<\/strong>.<\/p><h2 class=\"wp-block-heading\" id=\"h-kesimpulan\">Kesimpulan<\/h2><p>Laravel adalah framework pengembangan web PHP full-stack yang menyediakan berbagai tool untuk mempermudah pengembangan aplikasi.<\/p><p>Sebagai contoh, tersedia template Blade untuk mengintegrasikan PHP ke dalam HTML dengan mudah, dan ada juga starter kit Breeze untuk membantu Anda membuat sistem autentikasi.<\/p><p>Di tutorial Laravel ini, kami sudah menjelaskan berbagai macam tool dan konsep penting yang ada di Laravel. Berikut rangkuman singkatnya:<\/p><ul class=\"wp-block-list\">\n<li><strong>PHP Artisan <\/strong>&ndash; tool command-line untuk membuat dan mengelola komponen aplikasi Laravel.<\/li>\n\n\n\n<li><strong>Route <\/strong>&ndash; sistem yang mengarahkan permintaan pengguna ke controller tertentu berdasarkan permintaan HTTP untuk diproses.<\/li>\n\n\n\n<li><strong>Controller <\/strong>&ndash; logika yang menangani operasi CRUD berdasarkan permintaan klien yang masuk.<\/li>\n\n\n\n<li><strong>Model <\/strong>&ndash; metode yang memungkinkan controller berinteraksi dengan skema dari tabel database tertentu.<\/li>\n\n\n\n<li><strong>View <\/strong>&ndash; tampilan front-end aplikasi Anda, yang berfungsi untuk menerima input dan menampilkan output.<\/li>\n<\/ul><p>Guna membantu Anda belajar Laravel dengan lebih mudah, kami sarankan untuk membuat proyek baru untuk latihan. Apabila menggunakan paket VPS Hostinger, Anda bisa meminta bantuan AI Assistant kami, <strong>Kodee<\/strong>, untuk membantu proses belajar Anda.<\/p><h2 class=\"wp-block-heading\" id=\"h-tanya-jawab-faq-tutorial-laravel\">Tanya Jawab (FAQ) Tutorial Laravel<\/h2><div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-69442b992373f\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Apa itu Laravel dan apa fungsinya?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p><a href=\"\/tutorial\/apa-itu-laravel\">Laravel<\/a> adalah framework pengembangan web PHP yang menyediakan solusi lengkap untuk mengembangkan berbagai jenis aplikasi. Sebagai contoh, Anda bisa mengembangkan platform e-Commerce atau RESTful API. Karena merupakan teknologi full-stack, Anda bisa mengembangkan front-end maupun back-end dengan Laravel.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-69442b9923743\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Apa saja fitur-fitur utama Laravel?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Fitur utama Laravel mencakup Blade templating engine yang berguna untuk menyematkan PHP ke dalam komponen HTML, PHP Artisan untuk pemanggilan database berorientasi objek yang lebih efisien, dan syntax kode yang praktis untuk mempermudah proses pengembangan. Laravel juga menggunakan struktur MVC yang membantu developer mengatur komponen aplikasinya dengan lebih mudah.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-69442b9923744\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Apakah Laravel back-end atau front-end?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Laravel bersifat full-stack, yang berarti bisa menangani back-end maupun front-end. Berdasarkan arsitektur MVC-nya, back-end bisa digunakan sebagai lapisan model dan controller, lalu front-end sebagai komponen view.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Laravel adalah framework PHP open-source yang populer, salah satunya karena syntax yang mudah digunakan. Framework ini sering digunakan oleh developer PHP untuk membuat berbagai aplikasi web, seperti toko online, media sosial, dan CMS. Di tutorial Laravel ini, kami akan menjelaskan berbagai hal tentang framework ini, mulai dari penyiapannya hingga teknik-teknik tingkat lanjut. Anda juga akan [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/id\/tutorial\/cara-menggunakan-laravel\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":190,"featured_media":42578,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Tutorial belajar Laravel untuk pemula, lengkap dengan contohnya","rank_math_description":"Mencari tutorial Laravel? Yuk, simak artikel ini selengkapnya! Kami akan membantu Anda belajar Laravel dari awal hingga teknik-tekniknya.","rank_math_focus_keyword":"menggunakan laravel","footnotes":""},"categories":[5096],"tags":[],"class_list":["post-42637","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/laravel-tutorial","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/tutorial-laravel","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/cara-menggunakan-laravel","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/laravel-tutorial","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/laravel-tutorial","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/laravel-tutorial","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/tutorial-laravel","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/laravel-tutorial","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/laravel-tutorial","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/laravel-tutorial","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/laravel-tutorial","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/42637","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/users\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/comments?post=42637"}],"version-history":[{"count":8,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/42637\/revisions"}],"predecessor-version":[{"id":47033,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/posts\/42637\/revisions\/47033"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media\/42578"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/media?parent=42637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/categories?post=42637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/id\/tutorial\/wp-json\/wp\/v2\/tags?post=42637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}