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.
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 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.
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.
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.
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.
Pada tahap awal dibuat migration untuk membangun struktur database sistem akademik. Tabel
yang dibuat meliputi majors, students, subjects, dan
student_subject sebagai tabel pivot.
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
Perintah migrate digunakan untuk membuat seluruh tabel yang telah didefinisikan pada file migration ke dalam database MySQL.
Model dibuat untuk merepresentasikan tabel database dan mendefinisikan relationship antar data.
Pada tahap ini dibuat relationship antar model menggunakan Eloquent ORM. Model Major menggunakan
hasMany(), Student menggunakan belongsTo() dan belongsToMany(),
sedangkan Subject menggunakan belongsToMany().
Seeder dibuat untuk menghasilkan data contoh secara otomatis sehingga proses pengujian relationship dapat dilakukan tanpa memasukkan data secara manual.
Jalankan seeder
Perintah ini digunakan untuk mengisi seluruh tabel dengan data yang telah ditentukan pada seeder.
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.
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.
Layout utama
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
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
Halaman Create Student digunakan untuk menambahkan data mahasiswa baru ke dalam database. Form yang disediakan meliputi NIM, nama mahasiswa, alamat, dan pilihan jurusan.
Table major
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
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
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
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.
Tambahkan Route
Buat Folder dan File View
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
Hasil
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.
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
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.
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
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.
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
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.
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
with() membuat proses pengambilan data menjadi lebih efisien.
withCount() mempermudah proses perhitungan jumlah mahasiswa tanpa membuat
query SQL yang kompleks.
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.
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.