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
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';
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')); } }
4. Aktifkan route url nya
File untuk view nya
Many.blade.php
Route::get('ManyMany/{nama}','TestController@olahTabelUserAkses');