Eloquent Relationship di Laravel

Aug 18, 2024

Catatan Kuliah - Eloquent Relationship

Pengantar

  • Episode 11 dari playlist Belajar Laravel 11 untuk Pemula.
  • Fokus pada Eloquent Relationship untuk menghubungkan model di Laravel.

Struktur Database

  • Terdapat dua tabel: users dan posts.
  • Tabel posts saat ini memiliki penulis yang ditulis secara manual.
  • Tujuan: menghubungkan posts dengan users agar penulis menjadi Foreign Key dalam tabel posts.

Jenis Relasi

  • One to Many: Satu user dapat menulis banyak postingan. Satu postingan hanya ditulis oleh satu user.
  • Penting untuk merancang relasi ini karena akan menentukan cara kita memodelkan database.

Migrasi Database

  • Foreign Key: Menghubungkan tabel users dengan posts.
  • Menggunakan Eloquent ORM untuk mempermudah pengelolaan relasi dalam kode Laravel.
  • Contoh penulisan skema migrasi:
    Schema::table('posts', function (Blueprint $table) {
        $table->unsignedBigInteger('author_id')->constrained('users');
    });
    

Menambahkan Data

  • Cara menambahkan data ke dalam tabel posts dan users.
  • Gunakan Laravel Factory untuk membuat data dummy.
  • Contoh:
    Post::factory()->count(10)->create();
    

Memanfaatkan Factory

  • Factory dapat digunakan untuk mengacak penulis postingan.
  • Menggunakan metode recycle untuk memilih penulis dari model user yang sudah ada.
  • Contoh:
    User::factory()->count(5)->create();
    Post::factory()->count(100)->create();
    

Relasi dalam Model

  • Cara mendefinisikan relasi di dalam model.
  • Menambahkan metode di model User dan Post:
    • User:
      public function posts() {
          return $this->hasMany(Post::class);
      }
      
    • Post:
      public function author() {
          return $this->belongsTo(User::class);
      }
      

Mengambil Data dari Relasi

  • Contoh mengambil data penulis dari postingan:
    $post = Post::first();
    $authorName = $post->author->name;
    
  • Contoh mengambil semua postingan dari seorang penulis:
    $user = User::first();
    $posts = $user->posts;
    

Tugas Praktik

  • Tambahkan kategori untuk setiap postingan:
    1. Buat model Category dan migrasi.
    2. Buat factory untuk kategori.
    3. Buat relasi antara posts dan categories (satu kategori untuk banyak postingan).
  • Penjelasan detail tentang cara kerja relasi dan penggunaannya dalam pengembangan aplikasi menggunakan Laravel.

Kesimpulan

  • Mempelajari cara menghubungkan tabel menggunakan Eloquent ORM.
  • Memastikan pengelolaan data yang lebih efisien dan menyederhanakan pengambilan data melalui relasi.
  • Penutup dari Sandika Galih dan pengingat untuk menyelesaikan tugas.