Panduan memulai cepat Laravel
Tags: laravel, webdev, programming, beginners
Published: 2023-12-12 02:58:20

## Komponen penting Laravel ada 3, yaitu (MVC):
1. M (Model)
   Merupakan jembatan antara database dengan controller, model juga dapat berisi relasi antar tabel (misalnya tabel user dengan produk), dan konfigurasi tabel (misalnya kolom apa saja yang boleh diinputkan dan kolom apa saja yang tidak boleh diinputkan)
2. V (View)
   Merupakan file yang berisi html untuk menampilkan website nya
3. Controller
   Merupakan file yang berisikan logika dari setiap url yang ada, misalnya url domain.com/api/siswa menggunakan controller SiswaController dengan fungsi index, yang berarti logika apa yang akan di tampilkan pada domain.com/siswa akan berada di SiswaController pada fungsi index
![Route example](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6k3mjwxa356xtivhcjqc.png)

## Pada Laravel setiap route menggunakan Http Method
Setiap route pada laravel menggunakan http method, seperti Get, Post, Put, atau Delete
1. GET (Digunakan untuk mengambil/menampilkan data)
2. POST (Digunakan untuk mengirim/memasukan data)
3. PUT (Digunakan untuk mengupdate data)
4. DELETE (Digunakan untuk menghapus data)
![CRUD](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ni5zhre25zw8a330udxm.png)

## Alur pembuatan endpoint/url pada laravel
Misalnya kita ingin membuat url seperti ini domain.com/api/siswa dan kita ingin menampilkan seluruh data siswa pada endpoint/url tersebut.
1. Konfigurasi database (Jika menggunakan mongodb, pada note satunya)
2. Buat **Model** (untuk mengatur tabel) dan **Controller** (untuk menyimpan logic pada endpoint/url) terlebih dahulu.
   ```
   // membuat model dengan nama siswa dan controller
   // option -c akan membuat controller dengan nama SiswaController
   php artisan make:model Siswa -c
   
   dan model akan di simpan pada App\Models
   ```
3. Konfigurasi **Model** agar dapat digunakan
![Model Configuration](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/80aggjz25zuxpkic9twa.png)

   ```
   1. jika menggunakan mongodb, maka harus import
   use MongoDB\Laravel\Eloquent\Model;
   
   2. lalu atur collection mana yang akan digunakan (jika menggunakan mongodb)
   (collection seperti tabel, jadi nanti model Siswa akan memasukan data ke dalaman collection apa, pada code di atas, model Siswa akan menyimpan data pada collection siswas
   
   3. Lalu kita pilih kolom mana yang akan kita lindungi (lindungi maksudnya agar user tidak bisa memasukan data pada kolom tersebut) pada code di atas, kolom yang dilindugi adalah kolom _id. Jika kita menggunakan 
   protected $guarded
   berarti user dapat mengisi pada kolom sisanya (misalnya ada kolom _id, nama, kelas, alamat, maka user tidak boleh mengisi kolom _id, dan kolom sisanya (nama, kelas, alamat) itu boleh diisi oleh user)
   ```
4. Setelah itu langkah selanjutnya adalah membuat route, karena kita akan membuat API sehingga kita membuat route pada file routes/api.php
   ```
   // Berikut untuk contoh route nya
   Route::get('get-all-siswa-data', [SiswaController::class, 'getAllUserData');
   ```
   Dengan route tersebut, sehingga nanti akan menghasilkan endpoint/url
   ```
   domain.com/api/get-all-siswa-data
   ```
   Lalu selanjutnya ketika kita mengakses url/endpoint tersebut, maka akan error 
   ```
   method getAllSiswaData not found
   ```
   Ini dikarenakan pada controller yang dituju (SiswaController) itu tidak ada fungsi/method getAllSiswaData, selanjutnya kita mencoba membuat fungsi tersebut pada controller
5. Controller harusnya sudah ikut terbuat pada langkah sebelumnya, sehingga kita bisa membuka controller pada folder
   ```
   App\Http\Controllers
   ```
   Lalu buka SiswaController.php, lalu kita buat fungsi getAllSiswaData, sehingga code nya menjadi seperti berikut
![Controller read](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kcux7069nsc32uxuspt1.png)