Selamat datang di panduan lengkap Laravel 9 dalam Bahasa Indonesia! Laravel adalah salah satu framework PHP yang paling populer dan powerful, digunakan untuk membangun aplikasi web modern dengan cepat dan efisien. Artikel ini akan membimbing Anda, langkah demi langkah, melalui dasar-dasar hingga konsep yang lebih mendalam dalam Laravel 9. Jika Anda seorang pemula yang ingin memulai dengan Laravel, atau seorang developer berpengalaman yang ingin meningkatkan skill Anda, panduan ini cocok untuk Anda. Kami akan membahas semuanya, dari instalasi hingga deployment, dengan penjelasan yang mudah dipahami.
Daftar Isi
- Apa Itu Laravel dan Mengapa Memilih Laravel 9?
- Persiapan Lingkungan Pengembangan Laravel 9: XAMPP, Composer, dan Lainnya
- Instalasi Laravel 9: Langkah Demi Langkah dengan Composer
- Struktur Direktori Laravel 9: Memahami Organisasi File
- Routing di Laravel 9: Membuat dan Mengelola Rute Aplikasi
- Controller di Laravel 9: Logika Aplikasi dan Interaksi Model
- View di Laravel 9: Menampilkan Data dengan Blade Template Engine
- Model dan Database di Laravel 9: Mengelola Data dengan Eloquent ORM
- Migration dan Seeder Laravel 9: Membuat dan Mengisi Database
- Authentication Laravel 9: Sistem Login dan Registrasi
- Middleware Laravel 9: Mengamankan Rute dan Aplikasi
- Deployment Laravel 9: Menayangkan Aplikasi Web Anda
1. Apa Itu Laravel dan Mengapa Memilih Laravel 9?
Laravel adalah sebuah framework PHP open-source yang didesain untuk memudahkan para developer dalam membangun aplikasi web dengan kode yang bersih, terstruktur, dan mudah dipelihara. Framework ini menyediakan banyak fitur built-in yang membantu mempercepat proses pengembangan, seperti routing, templating engine (Blade), ORM (Eloquent), authentication, dan masih banyak lagi.
Mengapa Memilih Laravel 9?
Laravel 9 adalah versi terbaru dari framework Laravel, dan menawarkan beberapa keunggulan signifikan dibandingkan versi sebelumnya:
- PHP 8 Support: Laravel 9 sepenuhnya mendukung PHP 8, yang membawa peningkatan performa dan fitur-fitur baru. Ini berarti aplikasi Anda akan berjalan lebih cepat dan lebih efisien.
- Symfony 6 Components: Laravel 9 menggunakan komponen Symfony 6, yang memberikan stabilitas dan keamanan yang lebih baik.
- Flysystem 3.x: Integrasi dengan Flysystem terbaru memberikan kemudahan dalam mengelola storage, baik lokal maupun cloud.
- Improved Eloquent Accessors/Mutators: Fitur ini ditingkatkan untuk memberikan kemudahan dan fleksibilitas dalam memanipulasi data model.
- Enums in Route Bindings: Anda sekarang dapat menggunakan Enums sebagai parameter dalam route bindings.
- New Design for Ignition Error Page: Ignition error page yang baru memberikan tampilan yang lebih informatif dan memudahkan dalam debugging.
- Stringable Object: Stringable class menyediakan cara yang lebih mudah untuk bekerja dengan string.
- Dependency Injection in Anonymous Stub Migrations: Sekarang Anda dapat menggunakan dependency injection dalam anonymous stub migrations.
Dengan memilih Laravel 9, Anda mendapatkan teknologi terkini, peningkatan performa, dan fitur-fitur baru yang akan membuat proses pengembangan aplikasi web Anda menjadi lebih menyenangkan dan produktif. Tutorial Laravel 9 Bahasa Indonesia ini akan membahas fitur-fitur tersebut secara mendalam.
2. Persiapan Lingkungan Pengembangan Laravel 9: XAMPP, Composer, dan Lainnya
Sebelum memulai tutorial Laravel 9 Bahasa Indonesia ini, Anda perlu menyiapkan lingkungan pengembangan. Berikut adalah software dan tools yang Anda butuhkan:
- XAMPP (atau sejenisnya): XAMPP adalah paket software yang berisi Apache web server, MySQL database, dan PHP interpreter. Ini adalah pilihan populer untuk local development karena mudah diinstal dan dikonfigurasi. Anda bisa mengunduhnya dari https://www.apachefriends.org/index.html. Alternatif lain termasuk MAMP (untuk macOS) dan WAMP (untuk Windows).
- PHP: Pastikan versi PHP Anda memenuhi persyaratan Laravel 9. Laravel 9 membutuhkan PHP 8.0 atau lebih tinggi. XAMPP biasanya menyediakan PHP yang sudah terinstal, tetapi pastikan versinya sudah benar. Anda dapat memeriksa versi PHP Anda dengan menjalankan perintah
php -vdi terminal atau command prompt. - Composer: Composer adalah dependency manager untuk PHP. Ini akan membantu Anda menginstal Laravel dan library-library lain yang dibutuhkan oleh proyek Anda. Anda bisa mengunduhnya dari https://getcomposer.org/.
- Text Editor atau IDE: Anda memerlukan text editor atau Integrated Development Environment (IDE) untuk menulis kode. Beberapa pilihan populer termasuk Visual Studio Code (VS Code), Sublime Text, PHPStorm, dan Atom. VS Code direkomendasikan karena gratis, open-source, dan memiliki banyak extension yang berguna untuk pengembangan PHP dan Laravel.
- Database Client (Opsional): Database client seperti MySQL Workbench atau phpMyAdmin dapat memudahkan Anda untuk mengelola database MySQL Anda. phpMyAdmin biasanya sudah terinstal bersama XAMPP.
Langkah-langkah Persiapan:
- Instal XAMPP: Ikuti petunjuk instalasi yang disediakan di website XAMPP. Pastikan Anda memulai Apache dan MySQL services setelah instalasi selesai.
- Instal Composer: Ikuti petunjuk instalasi yang disediakan di website Composer. Pastikan Anda menambahkan Composer ke PATH environment variable agar Anda bisa menjalankannya dari terminal atau command prompt.
- Instal Text Editor/IDE: Pilih text editor atau IDE yang Anda sukai dan instal.
- Konfigurasi PHP (Opsional): Beberapa konfigurasi PHP mungkin perlu disesuaikan tergantung pada kebutuhan proyek Anda. Misalnya, Anda mungkin perlu mengaktifkan extension PHP tertentu atau mengatur memory limit. Konfigurasi PHP dapat ditemukan di file
php.ini. Lokasi file ini tergantung pada instalasi XAMPP Anda. Biasanya ada diC:xamppphpphp.ini(untuk Windows).
Setelah semua persiapan selesai, Anda siap untuk menginstal Laravel 9 dan memulai proyek Anda.
3. Instalasi Laravel 9: Langkah Demi Langkah dengan Composer
Setelah lingkungan pengembangan siap, langkah selanjutnya dalam tutorial Laravel 9 Bahasa Indonesia ini adalah menginstal Laravel 9. Proses instalasi Laravel 9 sangat mudah dengan menggunakan Composer.
Langkah-langkah Instalasi:
-
Buka Terminal atau Command Prompt: Buka terminal (macOS/Linux) atau command prompt (Windows).
-
Navigasi ke Direktori Web Server: Navigasi ke direktori tempat Anda ingin menyimpan proyek Laravel Anda. Biasanya, ini adalah direktori
htdocsdi dalam instalasi XAMPP Anda (misalnya,C:xampphtdocs). -
Jalankan Perintah Instalasi Composer: Gunakan perintah
composer create-projectuntuk membuat proyek Laravel baru. Perintahnya adalah sebagai berikut:composer create-project laravel/laravel nama-proyekGanti
nama-proyekdengan nama proyek yang Anda inginkan. Misalnya, jika Anda ingin membuat proyek dengan nama “blog”, perintahnya akan menjadi:composer create-project laravel/laravel blogComposer akan mengunduh dan menginstal semua dependencies yang dibutuhkan untuk Laravel 9. Proses ini mungkin memakan waktu beberapa menit, tergantung pada kecepatan koneksi internet Anda.
-
Navigasi ke Direktori Proyek: Setelah instalasi selesai, navigasi ke direktori proyek yang baru dibuat:
cd nama-proyekContoh:
cd blog -
Jalankan Server Pengembangan Laravel: Laravel menyediakan server pengembangan built-in yang memudahkan Anda untuk menjalankan aplikasi secara lokal. Jalankan perintah berikut:
php artisan serveIni akan memulai server pengembangan di
http://127.0.0.1:8000. Anda bisa membuka alamat ini di browser Anda untuk melihat aplikasi Laravel Anda. -
Konfigurasi Database (Opsional): Jika aplikasi Anda membutuhkan database, Anda perlu mengkonfigurasi koneksi database di file
.env. File ini terletak di direktori root proyek Anda. Buka file.envdan cari bagian yang berkaitan dengan database. Ubah nilai-nilai berikut sesuai dengan konfigurasi database Anda:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database_anda DB_USERNAME=username_database_anda DB_PASSWORD=password_database_andaGanti
nama_database_anda,username_database_anda, danpassword_database_andadengan nilai yang sesuai. Pastikan Anda sudah membuat database di MySQL sebelum mengkonfigurasi file.env.
Selamat! Anda telah berhasil menginstal Laravel 9. Sekarang Anda siap untuk memulai pengembangan aplikasi web Anda.
4. Struktur Direktori Laravel 9: Memahami Organisasi File
Memahami struktur direktori Laravel sangat penting untuk navigasi dan pengelolaan proyek yang efisien. Berikut adalah penjelasan singkat mengenai direktori-direktori utama dalam Laravel 9, penting untuk tutorial Laravel 9 Bahasa Indonesia ini:
app/: Direktori ini berisi kode inti aplikasi Anda, termasuk controllers, models, providers, dan lainnya. Ini adalah tempat sebagian besar kode aplikasi Anda akan berada.app/Http/Controllers/: Berisi controllers yang menangani request HTTP dan merespon dengan views atau data.app/Models/: Berisi Eloquent models yang berinteraksi dengan database.
bootstrap/: Direktori ini berisi file-file yang digunakan untuk booting framework Laravel.config/: Direktori ini berisi file-file konfigurasi untuk berbagai aspek aplikasi Anda, seperti database, mail, session, dan lainnya.database/: Direktori ini berisi file-file yang berkaitan dengan database.database/migrations/: Berisi migrations yang digunakan untuk membuat dan memodifikasi skema database.database/seeders/: Berisi seeders yang digunakan untuk mengisi database dengan data awal.
public/: Direktori ini adalah document root aplikasi Anda. Ini berisi fileindex.phpyang merupakan entry point aplikasi Anda, serta assets seperti CSS, JavaScript, dan images.resources/: Direktori ini berisi resources yang digunakan oleh aplikasi Anda, seperti views, language files, dan assets yang belum dikompilasi.resources/views/: Berisi Blade templates yang digunakan untuk menghasilkan HTML.resources/lang/: Berisi language files untuk lokalisasi aplikasi Anda.resources/assets/: (Opsional) Berisi assets yang belum dikompilasi, seperti Sass, Less, atau JavaScript.
routes/: Direktori ini berisi file-file yang mendefinisikan rute aplikasi Anda.routes/web.php: Berisi rute web aplikasi Anda.routes/api.php: Berisi rute API aplikasi Anda.
storage/: Direktori ini digunakan untuk menyimpan file-file yang dihasilkan oleh aplikasi Anda, seperti logs, cache, dan uploaded files.tests/: Direktori ini berisi tests untuk aplikasi Anda.vendor/: Direktori ini berisi dependencies yang diinstal oleh Composer. Anda tidak perlu mengubah file-file di direktori ini..env: File ini berisi environment variables untuk aplikasi Anda, seperti koneksi database, API keys, dan lainnya. File ini tidak boleh disimpan di repository public.artisan: File ini adalah command-line interface (CLI) Laravel. Ini digunakan untuk menjalankan berbagai perintah, seperti membuat controllers, models, migrations, dan lainnya.composer.json: File ini berisi informasi tentang dependencies proyek Anda.package.json: File ini berisi informasi tentang dependencies JavaScript proyek Anda.
Dengan memahami struktur direktori Laravel 9, Anda dapat dengan mudah menemukan dan mengelola file-file yang dibutuhkan untuk mengembangkan aplikasi web Anda.
5. Routing di Laravel 9: Membuat dan Mengelola Rute Aplikasi
Routing adalah bagian penting dari setiap aplikasi web. Di Laravel 9, routing digunakan untuk mendefinisikan bagaimana aplikasi Anda merespon request HTTP yang berbeda. Bagian ini dari tutorial Laravel 9 Bahasa Indonesia akan menjelaskan bagaimana cara membuat dan mengelola rute di Laravel 9.
Definisi Rute:
Rute didefinisikan di file routes/web.php (untuk rute web) dan routes/api.php (untuk rute API). Anda dapat menggunakan berbagai metode HTTP (GET, POST, PUT, DELETE) untuk mendefinisikan rute.
Contoh Rute Sederhana:
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
return view('welcome');
});
Kode di atas mendefinisikan rute GET untuk URL /. Ketika pengguna mengunjungi /, Laravel akan menampilkan view welcome.blade.php.
Menggunakan Controller:
Biasanya, Anda akan menggunakan controller untuk menangani logika yang lebih kompleks.
use IlluminateSupportFacadesRoute;
use AppHttpControllersHomeController;
Route::get('/', [HomeController::class, 'index']);
Kode di atas mendefinisikan rute GET untuk URL /. Ketika pengguna mengunjungi /, Laravel akan memanggil method index di controller HomeController.
Rute dengan Parameter:
Anda dapat mendefinisikan rute dengan parameter.
use IlluminateSupportFacadesRoute;
use AppHttpControllersUserController;
Route::get('/users/{id}', [UserController::class, 'show']);
Kode di atas mendefinisikan rute GET untuk URL /users/{id}. {id} adalah parameter yang akan diteruskan ke method show di controller UserController.
Rute Bernama (Named Routes):
Memberi nama pada rute memudahkan Anda untuk mereferensikan rute tersebut di dalam kode Anda.
use IlluminateSupportFacadesRoute;
use AppHttpControllersUserController;
Route::get('/users/{id}', [UserController::class, 'show'])->name('users.show');
Anda kemudian dapat menggunakan fungsi route() untuk menghasilkan URL untuk rute tersebut:
<a href="{{ route('users.show', ['id' => 1]) }}">Lihat User</a>
Grup Rute (Route Groups):
Anda dapat menggunakan grup rute untuk mengelompokkan rute dengan middleware, namespace, atau prefix yang sama.
use IlluminateSupportFacadesRoute;
Route::middleware(['auth'])->group(function () {
Route::get('/profile', function () {
// Hanya pengguna yang terautentikasi yang bisa mengakses rute ini
});
Route::get('/settings', function () {
// Hanya pengguna yang terautentikasi yang bisa mengakses rute ini
});
});
Resource Controller:
Resource controller menyediakan cara yang mudah untuk membuat rute CRUD (Create, Read, Update, Delete) untuk resource tertentu.
use IlluminateSupportFacadesRoute;
use AppHttpControllersPhotoController;
Route::resource('photos', PhotoController::class);
Kode di atas akan membuat rute-rute berikut:
GET /photos(index)POST /photos(store)GET /photos/{photo}(show)PUT /photos/{photo}(update)DELETE /photos/{photo}(destroy)GET /photos/create(create)GET /photos/{photo}/edit(edit)
Middleware:
Middleware digunakan untuk memfilter request HTTP yang masuk ke aplikasi Anda. Misalnya, Anda dapat menggunakan middleware untuk memastikan bahwa hanya pengguna yang terautentikasi yang bisa mengakses rute tertentu.
Dengan memahami routing di Laravel 9, Anda dapat mendefinisikan bagaimana aplikasi Anda merespon request HTTP yang berbeda dan mengelola rute aplikasi Anda dengan mudah.
6. Controller di Laravel 9: Logika Aplikasi dan Interaksi Model
Controllers adalah kelas yang bertanggung jawab untuk menangani request HTTP yang masuk dan merespon dengan view atau data. Controllers berisi logika aplikasi Anda dan berinteraksi dengan model untuk mengambil dan menyimpan data. Bagian ini dari tutorial Laravel 9 Bahasa Indonesia akan menjelaskan bagaimana cara membuat dan menggunakan controller di Laravel 9.
Membuat Controller:
Anda dapat membuat controller menggunakan perintah Artisan:
php artisan make:controller NamaController
Misalnya, untuk membuat controller dengan nama UserController, jalankan perintah berikut:
php artisan make:controller UserController
Ini akan membuat file controller baru di app/Http/Controllers/UserController.php.
Contoh Controller:
<?php
namespace AppHttpControllers;
use AppModelsUser;
use IlluminateHttpRequest;
class UserController extends Controller
{
/**
* Menampilkan daftar user.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$users = User::all();
return view('users.index', compact('users'));
}
/**
* Menampilkan detail user.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function show($id)
{
$user = User::findOrFail($id);
return view('users.show', compact('user'));
}
/**
* Membuat user baru.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view('users.create');
}
/**
* Menyimpan user baru.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:6',
]);
User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
]);
return redirect()->route('users.index')->with('success', 'User berhasil ditambahkan.');
}
/**
* Menampilkan form untuk mengedit user.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function edit($id)
{
$user = User::findOrFail($id);
return view('users.edit', compact('user'));
}
/**
* Mengupdate user.
*
* @param IlluminateHttpRequest $request
* @param int $id
* @return IlluminateHttpResponse
*/
public function update(Request $request, $id)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email,' . $id,
]);
$user = User::findOrFail($id);
$user->update([
'name' => $request->name,
'email' => $request->email,
]);
return redirect()->route('users.index')->with('success', 'User berhasil diupdate.');
}
/**
* Menghapus user.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function destroy($id)
{
$user = User::findOrFail($id);
$user->delete();
return redirect()->route('users.index')->with('success', 'User berhasil dihapus.');
}
}
Penjelasan Controller:
index(): Menampilkan daftar user dari database dan mengirimkannya ke viewusers.index.show(): Menampilkan detail user berdasarkan ID dan mengirimkannya ke viewusers.show.create(): Menampilkan form untuk membuat user baru.store(): Menyimpan user baru ke database setelah validasi input.edit(): Menampilkan form untuk mengedit user berdasarkan ID.update(): Mengupdate user di database setelah validasi input.destroy(): Menghapus user dari database berdasarkan ID.
Request:
Class IlluminateHttpRequest digunakan untuk mengakses data dari request HTTP, seperti input form, headers, dan cookies.
Validasi:
Anda dapat menggunakan method validate() pada request untuk memvalidasi input form. Jika validasi gagal, Laravel akan secara otomatis redirect pengguna kembali ke form dengan pesan error.
Model:
Controller berinteraksi dengan model untuk mengambil dan menyimpan data di database. Model Eloquent menyediakan cara yang mudah untuk berinteraksi dengan database menggunakan sintaks yang sederhana dan intuitif.
Dengan memahami controllers di Laravel 9, Anda dapat menulis logika aplikasi Anda dan berinteraksi dengan model untuk mengelola data dengan mudah.
7. View di Laravel 9: Menampilkan Data dengan Blade Template Engine
Views bertanggung jawab untuk menampilkan data kepada pengguna. Di Laravel 9, Anda dapat menggunakan Blade template engine untuk membuat views yang dinamis dan mudah dipelihara. Bagian ini dari tutorial Laravel 9 Bahasa Indonesia akan menjelaskan bagaimana cara membuat dan menggunakan views di Laravel 9.
Membuat View:
Views disimpan di direktori resources/views. Anda dapat membuat view baru dengan membuat file .blade.php di direktori tersebut. Misalnya, untuk membuat view dengan nama welcome, buat file resources/views/welcome.blade.php.
Contoh View:
<!DOCTYPE html>
<html>
<head>
<title>Selamat Datang</title>
</head>
<body>
<h1>Selamat Datang di Aplikasi Saya!</h1>
<p>Halo, {{ $name }}!</p>
</body>
</html>
Penjelasan View:
{{ $name }}: Ini adalah contoh Blade syntax yang digunakan untuk menampilkan data.$nameadalah variabel yang diteruskan dari controller.
Meneruskan Data ke View:
Anda dapat meneruskan data ke view dari controller menggunakan fungsi view().
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
$name = 'John Doe';
return view('welcome', ['name' => $name]);
});
Kode di atas akan meneruskan variabel $name dengan nilai 'John Doe' ke view welcome.blade.php.
Blade Template Engine:
Blade menyediakan berbagai directive yang memudahkan Anda untuk membuat views yang dinamis.
-
@if: Untuk membuat conditional statements.@if ($age >= 18) <p>Anda sudah dewasa.</p> @else <p>Anda masih anak-anak.</p> @endif -
@foreach: Untuk membuat loop.<ul> @foreach ($users as $user) <li>{{ $user->name }}</li> @endforeach </ul> -
@include: Untuk menyertakan view lain.@include('partials.header') <h1>Selamat Datang</h1> @include('partials.footer') -
@extends: Untuk mewarisi layout dari view lain.@extends('layouts.app') @section('content') <h1>Selamat Datang</h1> <p>Ini adalah halaman utama.</p> @endsection -
@yield: Untuk mendefinisikan section yang dapat diisi oleh view yang mewarisi layout.<!DOCTYPE html> <html> <head> <title>@yield('title')</title> </head> <body> @yield('content') </body> </html>
Layouts:
Layouts adalah template dasar yang digunakan untuk membungkus views Anda. Ini membantu Anda untuk menjaga konsistensi tampilan aplikasi Anda. Anda dapat membuat layout di direktori resources/views/layouts.
Dengan memahami views dan Blade template engine di Laravel 9, Anda dapat membuat views yang dinamis dan mudah dipelihara untuk menampilkan data kepada pengguna.
8. Model dan Database di Laravel 9: Mengelola Data dengan Eloquent ORM
Eloquent ORM (Object-Relational Mapper) adalah tool yang disediakan oleh Laravel untuk memudahkan interaksi dengan database. Dengan Eloquent, Anda dapat berinteraksi dengan database menggunakan sintaks yang berorientasi objek, tanpa perlu menulis query SQL secara manual. Bagian ini dari tutorial Laravel 9 Bahasa Indonesia akan menjelaskan bagaimana cara membuat dan menggunakan model Eloquent di Laravel 9.
Membuat Model:
Anda dapat membuat model menggunakan perintah Artisan:
php artisan make:model NamaModel
Misalnya, untuk membuat model dengan nama User, jalankan perintah berikut:
php artisan make:model User
Ini akan membuat file model baru di app/Models/User.php.
Contoh Model:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
Penjelasan Model:
$fillable: Mendefinisikan attributes yang boleh diisi (mass assignable). Ini penting untuk keamanan, karena mencegah pengguna untuk mengubah attributes yang tidak seharusnya diubah.$hidden: Mendefinisikan attributes yang harus disembunyikan ketika model di-serialize ke JSON atau array. Biasanya, ini digunakan untuk menyembunyikan password dan token.$casts: Mendefinisikan bagaimana attributes harus di-cast. Misalnya,email_verified_atdi-cast kedatetimedanpassworddi-cast kehashed.
Konvensi Penamaan:
Secara default, Eloquent akan menganggap bahwa model User berkorespondensi dengan tabel users di database. Anda dapat mengubah ini dengan mendefinisikan property $table di model.
Relasi:
Eloquent mendukung berbagai jenis relasi, seperti one-to-one, one-to-many, many-to-many, dan polymorphic relations.
-
One-to-One:
// User Model public function profile() { return $this->hasOne(Profile::class); } // Profile Model public function user() { return $this->belongsTo(User::class); } -
One-to-Many:
// User Model public function posts() { return $this->hasMany(Post::class); } // Post Model public function user() { return $this->belongsTo(User::class); } -
Many-to-Many:
// User Model public function roles() { return $this->belongsToMany(Role::class); } // Role Model public function users() { return $this->belongsToMany(User::class); }
Querying Data:
Anda dapat menggunakan Eloquent untuk melakukan berbagai operasi database, seperti:
-
Mengambil Semua Data:
$users = User::all(); -
Mengambil Data Berdasarkan ID:
$user = User::find(1); -
Mengambil Data dengan Kondisi:
$users = User::where('name', 'John Doe')->get(); -
Membuat Data Baru:
$user = new User(); $user->name = 'John Doe'; $user->email = '[email protected]'; $user->password = bcrypt('password'); $user->save(); -
Mengupdate Data:
$user = User::find(1); $user->name = 'Jane Doe'; $user->save(); -
Menghapus Data:
$user = User::find(1); $user->delete();
Dengan memahami model dan database di Laravel 9, Anda dapat berinteraksi dengan database menggunakan Eloquent ORM dengan mudah dan efisien.
9. Migration dan Seeder Laravel 9: Membuat dan Mengisi Database
Migration dan Seeder adalah fitur yang sangat berguna di Laravel untuk mengelola dan menginisialisasi database Anda. Migration memungkinkan Anda untuk membuat dan memodifikasi skema database Anda dengan kode, sehingga memudahkan untuk melacak perubahan dan berkolaborasi dengan tim. Seeder memungkinkan Anda untuk mengisi database Anda dengan data awal untuk keperluan pengembangan dan pengujian. Bagian ini dari tutorial Laravel 9 Bahasa Indonesia akan menjelaskan bagaimana cara menggunakan Migration dan Seeder di Laravel 9.
Migration:
Migration adalah file PHP yang berisi kode untuk membuat dan memodifikasi skema database.
Membuat Migration:
Anda dapat membuat migration menggunakan perintah Artisan:
php artisan make:migration create_users_table
Ini akan membuat file migration baru di database/migrations/.
Contoh Migration:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('users');
}
};
Penjelasan Migration:
up(): Method ini berisi kode untuk membuat atau memodifikasi skema database.down(): Method ini berisi kode untuk membatalkan perubahan yang dilakukan oleh methodup().
Menjalankan Migration:
Anda dapat menjalankan migration menggunakan perintah Artisan:
php artisan migrate
Ini akan menjalankan semua migration yang belum dijalankan.
Membatalkan Migration:
Anda dapat membatalkan migration terakhir menggunakan perintah Artisan:
php artisan migrate:rollback
Anda juga dapat membatalkan semua migration dan menjalankan kembali dari awal:
php artisan migrate:fresh
Seeder:
Seeder adalah file PHP yang berisi kode untuk mengisi database dengan data awal.
Membuat Seeder:
Anda dapat membuat seeder menggunakan perintah Artisan:
php artisan make:seeder UsersTableSeeder
Ini akan membuat file seeder baru di database/seeders/.
Contoh Seeder:
<?php
namespace DatabaseSeeders;
use IlluminateDatabaseConsoleSeedsWithoutModelEvents;
use IlluminateDatabaseSeeder;
use IlluminateSupportFacadesDB;
use IlluminateSupportFacadesHash;
use IlluminateSupportStr;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
DB::table('users')->insert([
'name' => Str::random(10),
'email' => Str::random(10).'@example.com',
'password' => Hash::make('password'),
]);
}
}
Penjelasan Seeder:
run(): Method ini berisi kode untuk mengisi database.
Menjalankan Seeder:
Anda dapat menjalankan seeder menggunakan perintah Artisan:
php artisan db:seed
Secara default, perintah ini akan menjalankan DatabaseSeeder.php yang dapat Anda gunakan untuk memanggil seeder-seeder lain. Anda juga dapat menjalankan seeder tertentu dengan menentukan nama class seeder:
php artisan db:seed --class=UsersTableSeeder
Dengan memahami migration dan seeder di Laravel 9, Anda dapat mengelola dan menginisialisasi database Anda dengan mudah dan efisien.
10. Authentication Laravel 9: Sistem Login dan Registrasi
Authentication adalah proses verifikasi identitas pengguna. Laravel menyediakan sistem authentication yang mudah digunakan, termasuk fitur login, registrasi, reset password, dan verifikasi email. Bagian ini dari tutorial Laravel 9 Bahasa Indonesia akan menjelaskan bagaimana cara menggunakan sistem authentication di Laravel 9.
Scaffolding Authentication:
Laravel menyediakan perintah Artisan untuk menghasilkan scaffolding authentication secara otomatis:
composer require laravel/ui
php artisan ui:auth
Untuk menggunakan Bootstrap:
php artisan ui bootstrap --auth
Untuk menggunakan Vue:
php artisan ui vue --auth
Untuk menggunakan React:
php artisan ui react --auth
Setelah menjalankan perintah di atas, Anda perlu menginstal dependencies JavaScript dan mengompilasinya:
npm install
npm run dev
Migration:
Jika Anda belum membuat migration untuk tabel users, Anda perlu menjalankannya:
php artisan migrate
Rute:
Scaffolding authentication akan membuat rute-rute berikut:
/login: Halaman login/register: Halaman registrasi/password/reset: Halaman reset password/password/email: Halaman untuk mengirim email reset password
Controllers:
Scaffolding authentication akan membuat controller-controller berikut:
- `AppHttpControllers









