Laravel ORM Eloquent Relationship - many to many

Many To Many Relationship

adalah relasi atau hubungan antar tabel dimana kedua tabel memiliki beberapa aksi atau kepentingan satu sama lain


NOTE!!
disini saya asumsikan kasusnya adalah setiap user bisa punya banyak hak akses, sedangkan sebaliknya setiap hak akses bisa dimiliki oleh banyak user. Karena penerapan relasi sebenarnya tergantung keperluan kasus kita
Sebelumnya biar lebih paham, mastah harus membaca dulu step-step komplitnnya untuk masalah relasi di One to One dan One to Many

Implementasinya ke Laravel ORM Eloquent - Many to Many

1.      Buat 3 tabel, tabel users, hakAkses, dan tabel usersHakAkses

Gunakan sistem membuat tabel dengan database migrasi Laravel untuk membuat tabelnya


    public function up()
    {
        Schema::create('users', function(Blueprint $kolom){
            $kolom->increments('id');
            $kolom->string('nama');
        });

        Schema::create('hakAkses', function(Blueprint $kolom){
            $kolom->increments('id');
            $kolom->string('akses');
        });

        Schema::create('usersHakAkses', function(Blueprint $kolom){
            $kolom->unsignedInteger('users_id')->nullable();
            $kolom->unsignedInteger('hakAkses_id')->nullable();
        });

        Schema::table('usersHakAkses', function(Blueprint $kolom){
            $kolom->foreign('users_id')
                ->references('id')
                ->on('users')
                ->onDelete('cascade')
                ->onUpdate('cascade');

            $kolom->foreign('hakAkses_id')->references('id')
                ->on('hakAkses')
                ->onDelete('cascade')
                ->onUpdate('cascade');
        });
    }


    public function down()
    {
        Schema::drop('usersHakAkses');
        Schema::drop('users');
        Schema::drop('hakAkses');

    }

lakukan migrasi tabelnya ke database dengan perintah: php artisan migrate


2.     Buat Model tabel

php artisan make:model User
php artisan make:model HakAkses

tambahkan code pada model yang dibuat
User.php
//tanda bahwa nama tabelnya adalah users
protected $table = 'users';

//method tanda punya hubungan many dengan tabel hakAkses
public function hakAkses()
{
    return $this->belongsToMany('App\HakAkses','usersHakAkses','users_id','hakAkses_id');
}

HakAkses.php
//untuk tanda nama tabelnya adalah hakAkses
protected $table = 'hakAkses';


3.     Buat Controller dan view nya (file blade.php)
file controllernya
namespace App\Http\Controllers;

use App\Http\Requests;
use App\User;

class TestController extends Controller
{
    public function olahTabelUserAkses($nama)
    {
        $user = User::where('nama',$nama)->firstOrFail();
        return view('Relatinship.ManyToMany.Many', compact('user'));
    }
}


File untuk view nya

Many.blade.php



4.     Aktifkan route url nya

Route::get('ManyMany/{nama}','TestController@olahTabelUserAkses');


5.     Hasil dari semua inti code di atas


Mudah bukan?
Kalo memang artikel ini bermanfaat, saya akan sangat berterimakasih jika meng share nya kepada orang lain, dan ikutlah berpatisipasi dalam menuliskan ilmu mastah di mastahcode

2

Search

Blog Tags

Blog & Comments