DEV Community

Muhammad Iqbal
Muhammad Iqbal

Posted on

Eloquent ORM

Eloquent ORM (Object-Relational Mapping) pada Laravel adalah cara untuk berinteraksi dengan database menggunakan model berbasis objek. Eloquent menyediakan antarmuka yang sederhana dan intuitif untuk melakukan operasi database, serta memungkinkan pengembang untuk bekerja dengan database menggunakan sintaksis PHP yang lebih alami. Berikut adalah beberapa kegunaan utama dari Eloquent ORM pada Laravel:

A. Interaksi Database yang Intuitif:

  • Eloquent memungkinkan kamu untuk berinteraksi dengan tabel database seolah-olah mereka adalah objek PHP. Ini membuat kode lebih mudah dibaca dan dipahami.
   $user = User::find(1);
   echo $user->name;
Enter fullscreen mode Exit fullscreen mode

B. Query Builder yang Kuat:

  • Eloquent menyediakan query builder yang kuat untuk membuat dan menjalankan query database dengan cara yang mudah dan elegan.
   $users = User::where('status', 'active')->get();
Enter fullscreen mode Exit fullscreen mode

C. Relasi Antar Tabel:

  • Eloquent memudahkan definisi dan penggunaan relasi antar tabel, seperti one-to-one, one-to-many, many-to-many, dan polymorphic relations.
   // One-to-many relationship
   class User extends Model
   {
       public function posts()
       {
           return $this->hasMany(Post::class);
       }
   }

   $user = User::find(1);
   foreach ($user->posts as $post) {
       echo $post->title;
   }
Enter fullscreen mode Exit fullscreen mode

D. Eager Loading:

  • Eloquent mendukung eager loading untuk menghindari masalah N+1 query dan meningkatkan performa aplikasi.
   $users = User::with('posts')->get();
Enter fullscreen mode Exit fullscreen mode

E. Mass Assignment:

  • Eloquent memungkinkan mass assignment untuk membuat atau memperbarui model dengan array data.
   $user = User::create([
       'name' => 'John Doe',
       'email' => 'johndoe@example.com',
       'password' => bcrypt('password')
   ]);
Enter fullscreen mode Exit fullscreen mode

F. Soft Deletes:

  • Eloquent mendukung soft deletes, memungkinkan kamu untuk "menghapus" model tanpa benar-benar menghapusnya dari database.
   use Illuminate\Database\Eloquent\SoftDeletes;

   class User extends Model
   {
       use SoftDeletes;
   }

   $user->delete(); // Model ini tidak dihapus, hanya ditandai sebagai terhapus
Enter fullscreen mode Exit fullscreen mode

G. Accessors dan Mutators:

  • Eloquent memungkinkan penggunaan accessors dan mutators untuk memodifikasi nilai atribut model saat diambil atau diset.
   class User extends Model
   {
       public function getFullNameAttribute()
       {
           return "{$this->first_name} {$this->last_name}";
       }
   }

   $user = User::find(1);
   echo $user->full_name; // Mengakses full_name accessor
Enter fullscreen mode Exit fullscreen mode

H. Event dan Observers:

  • Eloquent memungkinkan penggunaan event dan observers untuk menangani logika sebelum atau setelah operasi model tertentu.
   class UserObserver
   {
       public function creating(User $user)
       {
           // Logika sebelum membuat user
       }
   }

   User::observe(UserObserver::class);
Enter fullscreen mode Exit fullscreen mode

Contoh Implementasi Eloquent ORM

Berikut adalah contoh lengkap dari penggunaan Eloquent ORM untuk mendefinisikan model, melakukan operasi database, dan menggunakan relasi:

A. Mendefinisikan Model:

   namespace App\Models;

   use Illuminate\Database\Eloquent\Model;

   class Post extends Model
   {
       protected $fillable = ['title', 'content', 'user_id'];
   }
Enter fullscreen mode Exit fullscreen mode

B. Membuat dan Mengambil Data:

   // Membuat data baru
   $post = Post::create([
       'title' => 'Eloquent ORM',
       'content' => 'Belajar menggunakan Eloquent ORM di Laravel',
       'user_id' => 1
   ]);

   // Mengambil data
   $post = Post::find(1);
   echo $post->title;
Enter fullscreen mode Exit fullscreen mode

C. Menggunakan Relasi:

   // Mendefinisikan relasi
   class User extends Model
   {
       public function posts()
       {
           return $this->hasMany(Post::class);
       }
   }

   // Mengambil data dengan relasi
   $user = User::with('posts')->find(1);
   foreach ($user->posts as $post) {
       echo $post->title;
   }
Enter fullscreen mode Exit fullscreen mode

Kesimpulan

Eloquent ORM pada Laravel memudahkan pengembang untuk berinteraksi dengan database menggunakan model berbasis objek, menyediakan query builder yang kuat, mendukung berbagai jenis relasi antar tabel, dan memiliki fitur-fitur canggih seperti eager loading, mass assignment, soft deletes, accessors, mutators, event, dan observers. Dengan Eloquent, pengembangan aplikasi menjadi lebih cepat, efisien, dan mudah dipelihara.

Top comments (0)