← Kembali ke Portfolio
Praktikum Pemrograman Web

Laporan Praktikum 9
Eloquent Relationship pada Laravel

Sasya Zamora  ·  2411533014  ·  Informatika – Universitas Andalas  ·  2025/2026

1 Pendahuluan

Laravel merupakan framework PHP berbasis MVC (Model View Controller) yang banyak digunakan dalam pengembangan aplikasi web modern. Laravel menyediakan berbagai fitur yang mempermudah pengelolaan database, salah satunya adalah Eloquent ORM. Eloquent ORM memungkinkan pengembang untuk berinteraksi dengan database menggunakan model tanpa harus menulis query SQL secara langsung.

Pada praktikum ini dipelajari penerapan Eloquent Relationship dalam Laravel untuk menghubungkan beberapa tabel yang saling berelasi. Relationship yang digunakan meliputi One-to-Many dan Many-to-Many. Implementasi dilakukan melalui pembuatan migration, model, seeder, route, serta view untuk menampilkan data yang memiliki hubungan antar tabel.

Melalui praktikum ini mahasiswa dapat memahami bagaimana Laravel mengelola hubungan antar data sehingga proses pengembangan aplikasi menjadi lebih terstruktur dan efisien.

2 Tujuan Praktikum
  1. Memahami konsep relationship dalam Laravel.
  2. Mengimplementasikan One-to-Many dan Many-to-Many relationship.
  3. Membuat migration dengan foreign key.
  4. Menggunakan Eloquent relationship untuk query data.
  5. Menampilkan data dengan relationship di view.
3 Alat dan Bahan
Hardware
  • Laptop/PC.
  • RAM minimal 4 GB.
  • Penyimpanan minimal 10 GB.
Software
  • Windows 10/11.
  • Visual Studio Code.
  • PHP 8.x.
  • Composer.
  • Laravel 12.
  • XAMPP.
  • MySQL.
  • Web Browser (Google Chrome).
4 Dasar Teori
Laravel

Laravel adalah framework PHP open-source yang menerapkan konsep MVC (Model View Controller) untuk mempermudah proses pengembangan aplikasi web. Laravel menyediakan fitur migration, seeder, middleware, routing, dan Eloquent ORM.

Eloquent ORM

Eloquent ORM merupakan fitur Laravel yang digunakan untuk berinteraksi dengan database menggunakan model. Dengan Eloquent, proses CRUD dapat dilakukan dengan sintaks yang lebih sederhana dibandingkan query SQL biasa.

One-to-Many Relationship

Relationship One-to-Many adalah hubungan dimana satu data pada tabel utama dapat memiliki banyak data pada tabel lain. Contohnya, satu jurusan memiliki banyak mahasiswa, sedangkan satu mahasiswa hanya memiliki satu jurusan.

majors | |----< students
Many-to-Many Relationship

Relationship Many-to-Many adalah hubungan dimana satu data dapat berhubungan dengan banyak data lainnya dan sebaliknya. Contohnya, mahasiswa dapat mengambil banyak mata kuliah dan mata kuliah dapat diambil banyak mahasiswa. Hubungan ini menggunakan tabel penghubung atau pivot table.

students | student_subject | subjects

Migration Migration digunakan untuk membuat dan mengelola struktur tabel database secara terprogram melalui Laravel.

Seeder Seeder digunakan untuk mengisi data awal ke dalam database sehingga proses pengujian aplikasi menjadi lebih mudah.

5 Langkah Pengerjaan
1 Buat Migration

Pada tahap awal dibuat migration untuk membangun struktur database sistem akademik. Tabel yang dibuat meliputi majors, students, subjects, dan student_subject sebagai tabel pivot.

Gambar 1. Pembuatan migration tabel majors
Gambar 1. Pembuatan migration tabel majors
Gambar 2. Pembuatan migration tabel students
Gambar 2. Pembuatan migration tabel students
Gambar 3. Pembuatan migration tabel subjects
Gambar 3. Pembuatan migration tabel subjects
Gambar 4. Pembuatan migration tabel student_subject
Gambar 4. Pembuatan migration tabel student_subject

Tabel majors digunakan untuk menyimpan data jurusan, tabel students digunakan untuk menyimpan data mahasiswa, tabel subjects digunakan untuk menyimpan data mata kuliah, dan tabel student_subject digunakan untuk menghubungkan mahasiswa dengan mata kuliah.

Jalankan migrate

Gambar 5. Menjalankan perintah php artisan migrate
Gambar 5. Menjalankan perintah php artisan migrate

Perintah migrate digunakan untuk membuat seluruh tabel yang telah didefinisikan pada file migration ke dalam database MySQL.

2 Membuat Model dengan Relationship

Model dibuat untuk merepresentasikan tabel database dan mendefinisikan relationship antar data.

Gambar 6. Model Major dengan relationship hasMany
Gambar 6. Model Major dengan relationship hasMany
Gambar 7. Model Student dengan relationship belongsTo dan belongsToMany
Gambar 7. Model Student dengan relationship belongsTo dan belongsToMany
Gambar 8. Model Subject dengan relationship belongsToMany
Gambar 8. Model Subject dengan relationship belongsToMany

Pada tahap ini dibuat relationship antar model menggunakan Eloquent ORM. Model Major menggunakan hasMany(), Student menggunakan belongsTo() dan belongsToMany(), sedangkan Subject menggunakan belongsToMany().

3 Seeder untuk Data Sample

Seeder dibuat untuk menghasilkan data contoh secara otomatis sehingga proses pengujian relationship dapat dilakukan tanpa memasukkan data secara manual.

Gambar 9. Seeder untuk data Major
Gambar 9. Seeder untuk data Major
Gambar 10. Seeder untuk data Subject
Gambar 10. Seeder untuk data Subject
Gambar 11. Seeder untuk data Student
Gambar 11. Seeder untuk data Student
Gambar 12. Update DatabaseSeeder
Gambar 12. Update DatabaseSeeder

Jalankan seeder

Gambar 13. Menjalankan perintah db:seed
Gambar 13. Menjalankan perintah db:seed

Perintah ini digunakan untuk mengisi seluruh tabel dengan data yang telah ditentukan pada seeder.

4 Membuat Controller

StudentController

Gambar 14. Pembuatan StudentController
Gambar 14. Pembuatan StudentController

Pada tahap ini dibuat controller StudentController yang berfungsi sebagai penghubung antara model dan view. Controller digunakan untuk mengelola proses pengambilan, penyimpanan, pengubahan, dan penghapusan data mahasiswa. Dengan menggunakan resource controller, setiap fungsi CRUD dapat ditangani secara lebih terstruktur.

5 Membuat Routes
Gambar 15. Pembuatan route resource dan route latihan
Gambar 15. Pembuatan route resource dan route latihan

Route digunakan untuk menghubungkan URL dengan controller atau view tertentu. Pada praktikum ini digunakan resource route untuk menghubungkan seluruh fungsi pada StudentController dengan URL aplikasi. Selain itu ditambahkan beberapa route latihan untuk menampilkan data relationship.

6 Membuat Views

Layout utama

Gambar 16. Layout utama aplikasi
Gambar 16. Layout utama aplikasi

Layout utama dibuat untuk menyimpan struktur dasar halaman web yang digunakan secara berulang pada seluruh halaman aplikasi. Layout ini biasanya berisi header, navigasi, footer, dan area konten utama menggunakan directive @yield().

Index Students

Gambar 17. View index students
Gambar 17. View index students

Halaman Index Student digunakan untuk menampilkan seluruh data mahasiswa yang tersimpan pada database. Data ditampilkan dalam bentuk tabel yang berisi informasi NIM, nama mahasiswa, jurusan, dan aksi yang dapat dilakukan.

Create Student

Gambar 18. View create student
Gambar 18. View create student

Halaman Create Student digunakan untuk menambahkan data mahasiswa baru ke dalam database. Form yang disediakan meliputi NIM, nama mahasiswa, alamat, dan pilihan jurusan.

7 Melihat Tabel pada Database

Table major

Gambar 19. Tabel majors pada database
Gambar 19. Tabel majors pada database

Tabel majors berhasil dibuat menggunakan migration Laravel dan berfungsi untuk menyimpan data jurusan. Data yang tersimpan terdiri dari beberapa jurusan seperti Teknik Informatika, Sistem Informasi, Teknik Komputer, dan Manajemen Informatika.

Table student

Gambar 20. Tabel students pada database
Gambar 20. Tabel students pada database

Tabel students berhasil menyimpan data mahasiswa yang terdiri dari NIM, nama, alamat, dan major_id. Kolom major_id digunakan sebagai foreign key yang menghubungkan mahasiswa dengan jurusan tertentu.

Table student_subject

Gambar 21. Tabel student_subject sebagai tabel pivot
Gambar 21. Tabel student_subject sebagai tabel pivot

Tabel student_subject merupakan tabel pivot yang digunakan untuk menghubungkan mahasiswa dengan mata kuliah. Tabel ini berisi foreign key student_id dan subject_id.

Table subject

Gambar 22. Tabel subjects pada database
Gambar 22. Tabel subjects pada database

Tabel subjects digunakan untuk menyimpan data mata kuliah yang tersedia dalam sistem. Setiap mata kuliah memiliki nama dan jumlah SKS yang digunakan untuk menghitung total beban studi mahasiswa.

6 Latihan dan Tugas
1 Menampilkan Semua Mahasiswa Beserta Jurusan dan Mata Kuliahnya

Tambahkan Route

Gambar 23. Route untuk menampilkan data mahasiswa beserta relasi
Gambar 23. Route untuk menampilkan data mahasiswa beserta relasi

Buat Folder dan File View

Gambar 24. View untuk menampilkan mahasiswa, jurusan, dan mata kuliah
Gambar 24. View untuk menampilkan mahasiswa, jurusan, dan mata kuliah

Pada latihan ini digunakan Eloquent Relationship untuk menampilkan seluruh data mahasiswa beserta data jurusan dan mata kuliah yang dimiliki. Data mahasiswa diambil menggunakan model Student dengan memanfaatkan relationship major() dan subjects().

Jalankan Laravel

Gambar 25. Menjalankan server Laravel
Gambar 25. Menjalankan server Laravel

Hasil

Gambar 26. Hasil tampilan semua mahasiswa beserta jurusan dan mata kuliah
Gambar 26. Hasil tampilan semua mahasiswa beserta jurusan dan mata kuliah

Berdasarkan hasil yang diperoleh, setiap mahasiswa berhasil ditampilkan bersama informasi jurusan dan daftar mata kuliah yang diambil. Penggunaan eager loading membuat proses pengambilan data menjadi lebih efisien karena Laravel hanya menjalankan beberapa query untuk mengambil data yang saling berelasi.

2 Menampilkan Jurusan dengan Jumlah Mahasiswa
Gambar 27. Route untuk menampilkan jumlah mahasiswa per jurusan
Gambar 27. Route untuk menampilkan jumlah mahasiswa per jurusan
Gambar 28. View jumlah mahasiswa pada setiap jurusan
Gambar 28. View jumlah mahasiswa pada setiap jurusan

Pada latihan ini digunakan relationship antara tabel majors dan students untuk menghitung jumlah mahasiswa pada setiap jurusan. Laravel menyediakan fungsi withCount() yang dapat digunakan untuk menghitung jumlah data relasi secara otomatis.

Hasil

Gambar 29. Hasil jumlah mahasiswa pada setiap jurusan
Gambar 29. Hasil jumlah mahasiswa pada setiap jurusan

Hasil yang diperoleh menunjukkan jumlah mahasiswa pada masing-masing jurusan. Dari data tersebut dapat diketahui jurusan mana yang memiliki jumlah mahasiswa paling banyak. Informasi ini berguna untuk analisis data akademik karena dapat membantu melihat distribusi mahasiswa pada tiap jurusan.

3 Mata Kuliah yang Diambil oleh Mahasiswa Tertentu
Gambar 30. Route untuk menampilkan mata kuliah mahasiswa tertentu
Gambar 30. Route untuk menampilkan mata kuliah mahasiswa tertentu
Gambar 31. View mata kuliah mahasiswa tertentu
Gambar 31. View mata kuliah mahasiswa tertentu

Latihan ini memanfaatkan relationship Many-to-Many antara model Student dan Subject yang dihubungkan melalui tabel pivot student_subject. Query digunakan untuk mengambil data mata kuliah yang dimiliki oleh mahasiswa tertentu berdasarkan identitas mahasiswa tersebut.

Hasil

Gambar 32. Hasil mata kuliah yang diambil oleh mahasiswa tertentu
Gambar 32. Hasil mata kuliah yang diambil oleh mahasiswa tertentu

Hasil yang ditampilkan berupa daftar mata kuliah yang diambil oleh mahasiswa tertentu. Setiap mata kuliah yang muncul berasal dari data relasi yang tersimpan pada tabel pivot. Dari hasil tersebut dapat dilihat bahwa satu mahasiswa dapat mengambil lebih dari satu mata kuliah.

4 Total SKS yang Diambil Setiap Mahasiswa
Gambar 33. Route untuk menghitung total SKS setiap mahasiswa
Gambar 33. Route untuk menghitung total SKS setiap mahasiswa
Gambar 34. View total SKS setiap mahasiswa
Gambar 34. View total SKS setiap mahasiswa

Pada latihan ini dilakukan perhitungan total SKS yang diambil oleh masing-masing mahasiswa. Data SKS diperoleh dari relationship antara mahasiswa dan mata kuliah, kemudian dijumlahkan menggunakan fungsi sum('sks').

Hasil

Gambar 35. Hasil total SKS setiap mahasiswa
Gambar 35. Hasil total SKS setiap mahasiswa

Hasil yang diperoleh menunjukkan jumlah total SKS yang diambil oleh setiap mahasiswa berdasarkan mata kuliah yang dipilih. Perhitungan dilakukan secara otomatis oleh Laravel menggunakan koleksi data yang diperoleh dari relationship.

7 Hasil & Pembahasan

Hasil Pembuatan Database dan Migration

Berdasarkan proses migration yang telah dilakukan, seluruh tabel berhasil dibuat pada database MySQL sesuai dengan rancangan yang telah ditentukan. Tabel yang berhasil dibuat meliputi tabel majors, students, subjects, dan student_subject. Setiap tabel memiliki struktur yang sesuai dengan kebutuhan sistem akademik sederhana yang dikembangkan.

Pada tabel students terdapat foreign key major_id yang berfungsi menghubungkan mahasiswa dengan jurusan. Sedangkan tabel student_subject digunakan sebagai tabel penghubung (pivot table) yang menghubungkan mahasiswa dan mata kuliah dalam relationship Many-to-Many.

Hasil Pembuatan Model dan Relationship

Model Major, Student, dan Subject berhasil dibuat dan dikonfigurasi menggunakan Eloquent Relationship Laravel. Relationship One-to-Many diterapkan antara model Major dan Student, sedangkan relationship Many-to-Many diterapkan antara model Student dan Subject.

Hasil implementasi relationship memungkinkan data antar tabel saling terhubung sehingga informasi jurusan mahasiswa maupun mata kuliah yang diambil dapat diakses dengan mudah melalui model Laravel. Penggunaan Eloquent Relationship juga membuat kode program menjadi lebih sederhana dan mudah dipahami dibandingkan menggunakan query SQL secara manual.

Hasil Seeder Database

Proses seeding berhasil menambahkan data awal ke dalam database secara otomatis. Tabel majors berhasil terisi data jurusan, tabel subjects berhasil terisi data mata kuliah beserta jumlah SKS, dan tabel students berhasil terisi data mahasiswa.

Selain itu, tabel student_subject juga berhasil menyimpan relasi antara mahasiswa dan mata kuliah. Dengan adanya data yang telah dihasilkan oleh seeder, proses pengujian relationship dapat dilakukan dengan lebih mudah tanpa perlu memasukkan data secara manual satu per satu.

Hasil Tampilan Data Mahasiswa

Halaman daftar mahasiswa berhasil menampilkan seluruh data mahasiswa yang tersimpan pada database. Informasi yang ditampilkan meliputi NIM, nama mahasiswa, alamat, serta jurusan yang dimiliki oleh masing-masing mahasiswa.

Data yang muncul berasal dari database melalui controller dan diteruskan ke view menggunakan Eloquent ORM. Hal ini menunjukkan bahwa proses komunikasi antara model, controller, dan view telah berjalan dengan baik sesuai konsep MVC pada Laravel.

Hasil Latihan Query Relationship

  • Menampilkan semua mahasiswa beserta jurusan dan mata kuliahnya: query berhasil menampilkan data mahasiswa lengkap dengan informasi jurusan dan mata kuliah yang diambil. Penggunaan eager loading melalui method with() membuat proses pengambilan data menjadi lebih efisien.
  • Menampilkan jurusan yang memiliki mahasiswa terbanyak: query berhasil menampilkan jumlah mahasiswa pada setiap jurusan. Method withCount() mempermudah proses perhitungan jumlah mahasiswa tanpa membuat query SQL yang kompleks.
  • Menampilkan mata kuliah yang diambil mahasiswa tertentu: query berhasil menampilkan daftar mata kuliah berdasarkan relationship Many-to-Many melalui tabel pivot student_subject.
  • Menampilkan total SKS yang diambil setiap mahasiswa: query berhasil menghitung total SKS berdasarkan mata kuliah yang diambil menggunakan fungsi sum('sks').

Analisis Hasil Praktikum

Berdasarkan hasil praktikum yang telah dilakukan, Laravel terbukti mampu mengelola relationship antar tabel dengan baik melalui Eloquent ORM. Relationship One-to-Many dan Many-to-Many dapat diimplementasikan dengan lebih sederhana dibandingkan menggunakan query SQL secara langsung.

Selain itu, penggunaan migration mempermudah pembuatan struktur database, sedangkan seeder mempercepat proses pengisian data awal. Fitur-fitur tersebut membuat proses pengembangan aplikasi menjadi lebih terstruktur, efisien, dan mudah untuk dipelajari maupun dikembangkan lebih lanjut.

8 Kesimpulan

Berdasarkan praktikum yang telah dilaksanakan, dapat disimpulkan bahwa Laravel menyediakan fitur Eloquent ORM yang sangat membantu dalam pengelolaan database dan relationship antar tabel. Pada praktikum ini berhasil diterapkan relationship One-to-Many antara tabel majors dan students, serta relationship Many-to-Many antara tabel students dan subjects melalui tabel pivot student_subject.

Selain itu, proses pembuatan migration, model, controller, route, view, dan seeder berhasil dilakukan dengan baik sehingga aplikasi dapat menampilkan data yang saling berelasi secara dinamis. Hasil latihan juga menunjukkan bahwa Laravel mampu melakukan pengolahan dan pengambilan data relationship secara efisien menggunakan fitur Eloquent Relationship.

Melalui praktikum ini, pemahaman mengenai pengelolaan database dan hubungan antar tabel dalam Laravel menjadi lebih baik serta memberikan pengalaman dalam membangun aplikasi web yang terstruktur sesuai konsep MVC.