Membangun Aplikasi CRUD Sederhana Menggunakan Laravel 11

Hai Sobat BWA!🙌

Pada artikel sebelumnya, kita telah membahas tentang Fitur-Fitur Terbaru Laravel 11. Banyak perubahan yang tidak terlalu signifikan antara Laravel 10 dan Laravel 11. Laravel 11 dirancang agar proses web development lebih mudah dikelola dan diakses. Agar lebih mudah memahami secara langsung tentang perubahan yang ada, pada artikel kali ini kita akan membuat project sederhana menggunakan Laravel 11.

Simak artikel berikut sampai habis ya!

Persiapan

2(5).jpg

Ada beberapa tools atau aplikasi yang perlu kalian persiapkan sebelum mulai membuat project Laravel.

  1. Visual Studio Code
  2. Postman
  3. XAMPP
  4. Composer: Untuk mengecek apakah pada laptop kalian sudah ter-install composer, jalankan perintah composer -v . Dan jika belum ter-install, kalian dapat meng-installnya melalui https://getcomposer.org/
  5. PHP dengan versi ≥ 7.3

Langkah-Langkah Membuat Project

1. Step pertama yang harus kalian lakukan adalah create project menggunakan Laravel 11. Jalankan perintah berikut pada command prompt

composer create-project laravel/laravel belajar_laravel

2. Tunggu hingga proses instalasi selesai. Di sini, kita akan menggunakan database MySQL sehingga kita perlu mengubahnya terlebih dahulu pada file .env

Ubah port DB_CONNECTION dan DB_DATABASE

3. Buat database bernama belajar_laravel pada MySQL dan jangan lupa untuk menyesuaikan DB_DATABASE pada file .env

4. Lalu, jalankan perintah berikut untuk membuat migration tabel students

php artisan make:migration create_students_table

5. Pada file migration, kita akan menambahkan beberapa kolom yang dibutuhkan untuk tabel students

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('students', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->integer('class');
            $table->string('address');
            $table->integer('phone');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('students');
    }
};

6. Jalankan php artisan migrate untuk melakukan migrasi database

7. Selanjutnya buat model untuk tabel students dengan menjalankan perintah php artisan make:model Students. Fungsi model adalah untuk mengakses database, mewakili tabel dalam database, dan mengelola data yang memungkinkan kita untuk melakukan operasi CRUD (Create, Read, Update, dan Delete) pada data tersebut.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Students extends Model
{
    use HasFactory;

    protected $fillable = [
        'name',
        'class',
        'address',
        'phone',
    ];
}

8. Buat file controller dengan menjalankan perintah php artisan make:controller StudentsController --api . Fungsi --api adalah untuk menambahkan public function CRUD pada controller secara otomatis.

9. Selanjutnya kita akan menambahkan function untuk melakukan add data, update data, delete data, dan get data. Modifikasi file StudentsController dengan menambahkan kode berikut:

  • Function Create Data
		public function store(Request $request)
    {
        $request->validate([
            'name'          => 'required|string',
            'address'       => 'required|string',
            'class'         => 'required|integer',
            'phone'         => 'required|integer'
        ]);

        $students = new Students([
            'name'          => $request->name,
            'address'       => $request->address,
            'class'         => $request->class,
            'phone'         => $request->phone
        ]);
        $students->save();

        if($students) {
            return response()->json([
                'status' => 'success',
                'message' => 'Data added succesfully',
                'data' => $students
            ]);
        } else {
            return Response ()->json([
                'status' => 'error',
                'message' => 'Error adding data',
                'data' => $students
            ]);
        }
    }
  • Function Get Data
public function index()
    {
        try {
            $students = Students::all();
      
            return response()->json([
              'status' => 'success',
              'message' => 'Get all students success',
              'data' => $students,
            ]);
          } catch (\Exception $e) {
            return response()->json([
              'status' => 'error',
              'message' => 'Get all students failed',
              'error' => $e->getMessage(),
            ]);
          }
    }
  • Function Update Data
public function update(Request $request, string $id)
    {
        $students = Students::find($id);

        // Jika data siswa tidak ditemukan
        if (!$students) {
            return response()->json(['message' => 'Student not found'], 404);
        }

        $request->validate([
            'name' => 'required|string',
            'class' => 'required|string',
            'address' => 'required|integer',
            'phone' => 'required|integer',
        ]);

        $students->update([
            'name' => $request->name,
            'class' => $request->class,
            'address' => $request->address,
            'phone' => $request->phone,
        ]);

        return response()->json([
            'status' => 'success',
            'message' => 'Data updated succesfully',
            'data' => $students
        ]);
    }
  • Function Delete Data
public function destroy(string $id)
    {
        $students = Students::find($id);

        // Jika data siswa tidak ditemukan
        if (!$students) {
            return response()->json(['message' => 'Student not found'], 404);
        }

        $students->delete();

        return response()->json([
            'status' => 'success',
            'message' => 'Data deleted succesfully',
            'data' => $students
        ]);
    }

10. Langkah selanjutnya adalah membuat route api. Karena pada Laravel 11 tidak menyediakan route api secara langsung, kita harus membuatnya secara manual. Jalankan perintah php artisan install:api untuk membuat file route api

11. Tunggu hingga proses selesai, kemudian file api.php akan terletak pada folder routes dan tambahkan list route berikut pada file api.php

Route::apiResource('/students', StudentsController::class);

Eitss, jangan lupa untuk menambahkan use App\Http\Controllers\StudentsController; pada bagian atas ya!

12. Kemudian, jalankan php artisan serve dan buka aplikasi Postman untuk melakukan testing function CRUD yang telah kita buat

13. Berikut adalah contoh jika function CRUD yang kita buat berhasil dijalankan

Contoh jika function delete data berhasil
Contoh jika function add data berhasil

Keunggulan Membangun RESTful Api Menggunakan Laravel 11

  1. Struktur folder yang sederhana: Hal ini memudahkan kita dalam membangun sebuah project karena tidak tersedia file-file yang mungkin jarang digunakan
  2. Adanya Function Casts: Pada Laravel 11, $casts diubah menjadi Function casts yang membuat kita lebih fleksibel dalam menggunakan casting, contohnya seperti mengimplementasikan class atau function lain.
  3. Penggunaan Providers: Pada Laravel 10, file Providers terletak pada direktori app dan memuat banyak file yang mungkin hanya kita gunakan sebagian. Sedangkan jika menggunakan Laravel 11, kita hanya perlu menggunakan file yang ada pada direktori bootstrap/providers.php jika ingin menambahkan Service Provider.

Kesimpulan

Itulah tutorial membangun aplikasi CRUD menggunakan Laravel 11. Sebelum membuat project, tentunya kita perlu menyiapkan beberapa hal agar aplikasi dapat berjalan dengan lancar. Kita harus mempersiapkan VS Code sebagai text editor, XAMPP sebagai server component, dan aplikasi Postman untuk melakukan testing API. Selain itu, kita juga harus memastikan komputer kita sudah ter-install composer dan PHP dengan versi yang sesuai. Setelah beberapa hal tersebut siap, kita dapat langsung mengeksekusi project Laravel 11 sesuai dengan tutorial di atas!

Semoga artikel ini dapat bermanfaat ya! Dan bagi kalian yang tertarik untuk mempelajari lebih lanjut tentang Laravel, kalian bisa mempelajarinya secara gratis melalui BuildWithAngga loh! Jangan lupa kepoin kelas-kelasnya ya! Sampai jumpa di artikel selanjutnya🙌