Eloquent ORM dan Database di Laravel

Apa Itu Eloquent ORM?
Eloquent ORM adalah sistem ORM (Object-Relational Mapping) di Laravel yang memudahkan pengelolaan database dengan sintaks yang lebih intuitif dan berbasis objek.
Mengapa Menggunakan Eloquent ORM?
- Mempermudah interaksi dengan database tanpa menulis SQL secara langsung.
- Mendukung berbagai jenis relasi database.
- Memudahkan debugging dan pemeliharaan kode.
Perbedaan Eloquent ORM dengan Query Builder
Fitur | Eloquent ORM | Query Builder |
---|---|---|
Sintaks Lebih Mudah | ✅ | ❌ |
Mendukung Relasi | ✅ | ❌ |
Performa Cepat | ✅ | ✅ |
Dasar-Dasar Eloquent ORM
Struktur Model di Laravel
Setiap tabel database di Laravel memiliki model yang merepresentasikan data tersebut.
Membuat Model di Laravel
Gunakan perintah berikut untuk membuat model:
php artisan make:model Post
Konvensi Nama Model dan Tabel
Laravel secara otomatis mencocokkan model Post
dengan tabel posts
dalam database.
Operasi Database dengan Eloquent ORM
Insert Data dengan Eloquent
$post = new Post;
$post->title = 'Judul Post';
$post->content = 'Isi dari post ini';
$post->save();
Read Data dengan Eloquent
$posts = Post::all();
Update Data dengan Eloquent
$post = Post::find(1);
$post->title = 'Judul Baru';
$post->save();
Delete Data dengan Eloquent
Post::destroy(1);
Relasi dalam Eloquent ORM
One to One Relationship
class User extends Model {
public function profile() {
return $this->hasOne(Profile::class);
}
}
One to Many Relationship
class Post extends Model {
public function comments() {
return $this->hasMany(Comment::class);
}
}
Many to Many Relationship
class Post extends Model {
public function tags() {
return $this->belongsToMany(Tag::class);
}
}
Has Many Through Relationship
class Country extends Model {
public function posts() {
return $this->hasManyThrough(Post::class, User::class);
}
}
Polymorphic Relationship
class Image extends Model {
public function imageable() {
return $this->morphTo();
}
}
Query Lanjutan dengan Eloquent ORM
Filtering Data
$posts = Post::where('status', 'published')->get();
Sorting dan Pagination
$posts = Post::orderBy('created_at', 'desc')->paginate(10);
Aggregation dan Grouping
$totalPosts = Post::count();
Soft Deletes dan Restoring Data
Post::withTrashed()->restore();
Kesimpulan
Eloquent ORM adalah fitur powerful di Laravel untuk mengelola database dengan lebih mudah dan efisien.
FAQ
1. Apa keuntungan menggunakan Eloquent ORM dibanding Query Builder?
Eloquent ORM lebih mudah dipahami, mendukung relasi database, dan memungkinkan kode yang lebih bersih dan terstruktur.
2. Bagaimana cara menonaktifkan timestamps pada model?
Tambahkan properti berikut dalam model:
public $timestamps = false;
3. Apakah Eloquent ORM lebih lambat dibanding query SQL langsung?
Tergantung pada skenario, namun untuk pengembangan yang lebih cepat dan fleksibel, Eloquent ORM lebih disarankan.
4. Bagaimana cara melakukan eager loading?
Gunakan with()
untuk menghindari N+1 Query Problem:
$users = User::with('posts')->get();
5. Bagaimana cara menghapus data dengan Soft Deletes?
Gunakan:
Post::find(1)->delete();
Data akan tetap ada di database tetapi diberi tanda sebagai terhapus.
Itulah panduan lengkap mengenai Eloquent ORM dan Database di Laravel! 🚀
Posting Komentar