Laporan Praktikum 10 Pemrograman Web

Laravel Relationship (Student, Major, dan Subject)

Aliffia Humairah - 2311531004



Struktur Relasi

    - Student belongs to Major (Many-to-One)
    - Student belongs to many Subject through pivot table (Many-to-Many)
    - Major has many Student (One-to-Many)
    - Subject belongs to many Student through pivot table (Many-to-Many)

ERD (Entity Relationship Diagram) ERD

  • ERD Major dan Student
  • Syarat Laravel

  • ERD Student dan Subject
  • Syarat Laravel

    Langkah Langkah:

    A. Migration untuk tabel majors

    Buat migrasi database dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut di function up():

    https://i.imgur.com/mouN0kD.jpeg

    B. Migration untuk tabel students

    Buat migrasi database dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut di function up():

    https://i.imgur.com/9jNN2hN.jpeg

    C. Migration untuk tabel subjects

    Buat migrasi database dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut di function up():

    https://i.imgur.com/c84DUyS.jpeg

    D. Migration untuk tabel pivot student_subject

    Buat migrasi database dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut di function up():

    https://i.imgur.com/ORo6suI.jpeg

    Setelah semua migrasi telah dibuat dan disave, jalankan migrasi database dengan perintah terminal, jika berhasil maka akan seperti berikut:

    https://i.imgur.com/0p2jefD.jpeg

    Langkah selanjutnya yaitu membuat model dengan relationship sesuai dengan migrasi database yang telah dibuat.

    A. Model Major

    Buat model dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut:

    https://i.imgur.com/EZcnC05.jpeg

    B. Model Student

    Buat model dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut:

    https://i.imgur.com/BTSwhlo.jpeg

    C. Model Subject

    Buat model dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut:

    https://i.imgur.com/XRlgTRx.jpeg

    Langkah selanjutnya yaitu membuat sebuah seeder untuk memasukkan data ke dalam database.

    A. Seeder untuk Major

    Buat seeder dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut:

    https://i.imgur.com/9xRWDdV.jpeg

    B. Seeder untuk Subject

    Buat seeder dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut:

    https://i.imgur.com/e0IXwEz.jpeg

    C. Seeder untuk Student

    Buat seeder dengan menggunakan command berikut di terminal:

    Syarat Laravel

    Kemudian tambahkan kode berikut:

    https://i.imgur.com/hABFMod.jpeg

    D. Update DatabaseSeeder

    Tambahkan kode berikut di DatabaseSeeder

    Syarat Laravel

    Setelah semua seeder dibuat dan di save, jalankan seeder dengan perintah terminal, jika berhasil akan seperti berikut:

    https://i.imgur.com/v046vf8.jpeg

    Langkah selanjutnya yaitu membuat controller pada masing-masing model.

    A. StudentController

    Buat controller dengan perintah terminal berikut:

    Syarat Laravel

    Kemudian, tambahkan kode berikut di file controller:

    https://i.imgur.com/8iA5tuw.jpeg

    https://i.imgur.com/Qtwc7Kr.jpeg

    https://i.imgur.com/sghq6Gq.jpeg

    Langkah selanjutnya yaitu membuat Route untuk menentukan bagaimana aplikasi merespons permintaan (request) pada URL tertentu. Tambahkan kode ini di web.php

    https://i.imgur.com/DpKk77Q.jpeg

    Langkah selanjutnya yaitu membuat views untuk menampilkan pada halaman website.

    A. Layout utama

    Buat file pada resources/views/layouts/app.blade.php. kodenya adalah seperti berikut:

    https://i.imgur.com/PpyugUJ.png

    B. Index Students

    Buat file pada resources/views/students/index.blade.php. kodenya adalah seperti berikut:

    https://i.imgur.com/ESVG45G.jpeg

    https://i.imgur.com/CVKfC67.jpeg

    https://i.imgur.com/mRoSisN.jpeg

    C. Create Student

    Buat file pada resources/views/students/create.blade.php. kodenya adalah seperti berikut:

    https://i.imgur.com/pd9VjvE.jpeg

    https://i.imgur.com/9maP6dE.jpeg

    https://i.imgur.com/llMWZFO.jpeg

    Jika sudah, maka tampilannya akan seperti berikut:



    A. Index
    https://i.imgur.com/tLl5RUc.jpeg

    B. Create
    https://i.imgur.com/VcDH4zI.jpeg

    Latihan dan Tugas

    1. Query untuk menampilkan Jurusan yang memiliki mahasiswa terbanyak

    Pertama, kita ubah terlebih dahulu di StudentController. Tambah kode berikut di Index()

    https://i.imgur.com/cMiFNV2.png

    Query ini berfungsi untuk mencari dan mengambil satu data jurusan (Major) yang memiliki jumlah mahasiswa terbanyak. Langkah pertamanya (Major::withCount(‘students’)) adalah mengambil semua data jurusan sambil menghitung jumlah mahasiswa yang berelasi dengan setiap jurusan, hasil hitungan ini disimpan dalam kolom virtual bernama students_count; kemudian (orderByDesc(‘students_count’)) hasilnya diurutkan secara menurun berdasarkan jumlah mahasiswa tersebut; dan terakhir (first()) diambil satu record pertama dari hasil pengurutan, yang secara efektif adalah jurusan dengan jumlah mahasiswa terbanyak.

    Kemudian pada index dibawah tabel tambahkan kode berikut:

    https://i.imgur.com/Vh1xJQi.png

    Hasilnya akan menjadi seperti berikut:

    https://i.imgur.com/QFXLxsT.png

    2. Menambahkan View Detail menggunakan controller show()

    Kode viewnya adalah seperti berikut:

    https://i.imgur.com/WZvOumS.png

    https://i.imgur.com/aR673jL.png

    Hasilnya adalah sebagai berikut:

    https://i.imgur.com/J3DHjC5.png

    3. Menambahkan view edit dari controller update()

    Kode viewnya adalah seperti berikut:

    https://i.imgur.com/8ORMTD4.png

    https://i.imgur.com/gF3we8y.png

    https://i.imgur.com/LjM9RC9.png

    Hasilnya adalah sebagai berikut:

    https://i.imgur.com/D9yTRzq.png