Advertisement
Guest User

laravel roles and permissions tables

a guest
Jan 27th, 2020
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.71 KB | None | 0 0
  1. <?php
  2.  
  3. use Illuminate\Support\Facades\Schema;
  4. use Illuminate\Database\Schema\Blueprint;
  5. use Illuminate\Database\Migrations\Migration;
  6.  
  7. class CreatePermissionTables extends Migration
  8. {
  9.     /**
  10.      * Run the migrations.
  11.      *
  12.      * @return void
  13.      */
  14.     public function up()
  15.     {
  16.         $tableNames = config('permission.table_names');
  17.         $columnNames = config('permission.column_names');
  18.  
  19.         Schema::create($tableNames['permissions'], function (Blueprint $table) {
  20.             $table->bigIncrements('id');
  21.             $table->string('name');
  22.             $table->string('guard_name');
  23.             $table->timestamps();
  24.         });
  25.  
  26.  
  27.         Schema::create($tableNames['roles'], function (Blueprint $table) {
  28.             $table->bigIncrements('id');
  29.             $table->string('name');
  30.             $table->string('guard_name');
  31.             $table->timestamps();
  32.         });
  33.  
  34.         Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) {
  35.             $table->unsignedBigInteger('permission_id');
  36.  
  37.             $table->string('model_type');
  38.             $table->unsignedBigInteger($columnNames['model_morph_key']);
  39.             $table->index([$columnNames['model_morph_key'], 'model_type', ], 'model_has_permissions_model_id_model_type_index');
  40.  
  41.             $table->foreign('permission_id')
  42.                 ->references('id')
  43.                 ->on($tableNames['permissions'])
  44.                 ->onDelete('cascade');
  45.  
  46.             $table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'],
  47.                     'model_has_permissions_permission_model_type_primary');
  48.         });
  49.  
  50.         Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) {
  51.             $table->unsignedBigInteger('role_id');
  52.  
  53.             $table->string('model_type');
  54.             $table->unsignedBigInteger($columnNames['model_morph_key']);
  55.             $table->index([$columnNames['model_morph_key'], 'model_type', ], 'model_has_roles_model_id_model_type_index');
  56.  
  57.             $table->foreign('role_id')
  58.                 ->references('id')
  59.                 ->on($tableNames['roles'])
  60.                 ->onDelete('cascade');
  61.  
  62.             $table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'],
  63.                     'model_has_roles_role_model_type_primary');
  64.         });
  65.  
  66.         Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
  67.             $table->unsignedBigInteger('permission_id');
  68.             $table->unsignedBigInteger('role_id');
  69.  
  70.             $table->foreign('permission_id')
  71.                 ->references('id')
  72.                 ->on($tableNames['permissions'])
  73.                 ->onDelete('cascade');
  74.  
  75.             $table->foreign('role_id')
  76.                 ->references('id')
  77.                 ->on($tableNames['roles'])
  78.                 ->onDelete('cascade');
  79.  
  80.             $table->primary(['permission_id', 'role_id'], 'role_has_permissions_permission_id_role_id_primary');
  81.         });
  82.  
  83.         app('cache')
  84.             ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
  85.             ->forget(config('permission.cache.key'));
  86.     }
  87.  
  88.     /**
  89.      * Reverse the migrations.
  90.      *
  91.      * @return void
  92.      */
  93.     public function down()
  94.     {
  95.         $tableNames = config('permission.table_names');
  96.  
  97.         Schema::drop($tableNames['role_has_permissions']);
  98.         Schema::drop($tableNames['model_has_roles']);
  99.         Schema::drop($tableNames['model_has_permissions']);
  100.         Schema::drop($tableNames['roles']);
  101.         Schema::drop($tableNames['permissions']);
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement