# One to Many Eloquent di Laravel

Last edited time: June 7, 2023 7:42 AM Owner: Indry Sefviana Tags: Laravel

<figure><img src="https://3397141630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVUQUm1GVUT3pDnRHmDRU%2Fuploads%2FjWY4emgoJvkWTrAWn4xL%2FUntitled%20(6).png?alt=media&#x26;token=fc9723f6-9c6d-4f49-9bb0-1439996acd97" alt=""><figcaption></figcaption></figure>

Gimana cara buat relasi one to many di Laravel ? kamu dateng ditempat yang tepat hasekkk :D okey langsung aja tanpa basa basi cuss.

Disini saya mau share one to many versi ORM ya, karna relasi untuk versi query ya kurang lebih mirip-mirip query sql cuma emang agak beda aja penulisannya kalo dilaravel. Kalau kamu tertarik versi query sql laravel bisa nengok kesini <https://laravel.com/docs/8.x/queries>

Langkah pertam buat ORM One to many di Laravel:

Pertama, kamu buat dulu table melalui migration

```
php artisan make:migration create_users_table --create=users
```

atau bisa langsung buat model sekaligus migration dengan ini

```
php artisan make:model User -m
```

disesuaikan kebutuhan aja.

Lalu didalam migration buat code ini sebagai foreignkey di table itu

```
$table->bigInteger('slug_id')->unsigned();
```

dan juga ini letakkan paling bawah setelah timestamps()

```
$table->foreign('slug_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
```

Contoh seperti ini

```
Schema::create('galleries', function (Blueprint $table) {
            $table->id();
            $table->bigInteger('slug_id')->unsigned();
            $table->string('caption');
            $table->string('picture')->nullable();
            $table->timestamps();
            $table->foreign('slug_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');
        });
```

Dan tambahkan field pada table user seperti ini

```
Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('slug');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->string('role');
            $table->rememberToken();
            $table->timestamps();
        });
```

💡 Penting untuk diingat!Pastikan table galleries sebagai table one, struktur filenya dibawah table users yang sebagai table many

Contoh seperti berikut:

<figure><img src="https://3397141630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVUQUm1GVUT3pDnRHmDRU%2Fuploads%2FD1f4KdsdiMXx3hkwxsTR%2FUntitled%20(8).png?alt=media&#x26;token=60103e5f-e681-4285-a58f-fd422c8e19c3" alt=""><figcaption></figcaption></figure>

Jika tidak seperti gambar proses migration kamu pasti **gagal**, solusinya rename tanggal file :D

Selanjutnya buat relasi di model gallery sebagai table one

```
public function m_gallery()
    {
        return $this->hasMany(Gallery::class, 'slug_id', 'id');
    }
```

pada model user sebagai foreignkey table many

```
public function m_gallery()
    {
        return $this->belongsTo(Gallery::class, 'slug_id', 'id');
    }
```

Terakhir lakukan migrate data

```
php artisan migrate:fresh
```

Sekian Gomawo^^
