2018_03_10_024148_laratrust_setup_tables.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. use Illuminate\Database\Migrations\Migration;
  3. use Illuminate\Database\Schema\Blueprint;
  4. class LaratrustSetupTables extends Migration
  5. {
  6. /**
  7. * Run the migrations.
  8. *
  9. * @return void
  10. */
  11. public function up()
  12. {
  13. // Create table for storing roles
  14. Schema::create('roles', function (Blueprint $table) {
  15. $table->increments('id');
  16. $table->string('name')->unique();
  17. $table->string('display_name')->nullable();
  18. $table->string('description')->nullable();
  19. $table->timestamps();
  20. });
  21. // Create table for storing permissions
  22. Schema::create('permissions', function (Blueprint $table) {
  23. $table->increments('id');
  24. $table->string('name')->unique();
  25. $table->string('display_name')->nullable();
  26. $table->string('description')->nullable();
  27. $table->timestamps();
  28. });
  29. // Create table for associating roles to users and teams (Many To Many Polymorphic)
  30. Schema::create('role_user', function (Blueprint $table) {
  31. $table->unsignedInteger('role_id');
  32. $table->unsignedInteger('user_id');
  33. $table->string('user_type');
  34. $table->foreign('role_id')->references('id')->on('roles')
  35. ->onUpdate('cascade')->onDelete('cascade');
  36. $table->primary(['user_id', 'role_id', 'user_type']);
  37. });
  38. // Create table for associating permissions to users (Many To Many Polymorphic)
  39. Schema::create('permission_user', function (Blueprint $table) {
  40. $table->unsignedInteger('permission_id');
  41. $table->unsignedInteger('user_id');
  42. $table->string('user_type');
  43. $table->foreign('permission_id')->references('id')->on('permissions')
  44. ->onUpdate('cascade')->onDelete('cascade');
  45. $table->primary(['user_id', 'permission_id', 'user_type']);
  46. });
  47. // Create table for associating permissions to roles (Many-to-Many)
  48. Schema::create('permission_role', function (Blueprint $table) {
  49. $table->unsignedInteger('permission_id');
  50. $table->unsignedInteger('role_id');
  51. $table->foreign('permission_id')->references('id')->on('permissions')
  52. ->onUpdate('cascade')->onDelete('cascade');
  53. $table->foreign('role_id')->references('id')->on('roles')
  54. ->onUpdate('cascade')->onDelete('cascade');
  55. $table->primary(['permission_id', 'role_id']);
  56. });
  57. }
  58. /**
  59. * Reverse the migrations.
  60. *
  61. * @return void
  62. */
  63. public function down()
  64. {
  65. Schema::dropIfExists('permission_user');
  66. Schema::dropIfExists('permission_role');
  67. Schema::dropIfExists('permissions');
  68. Schema::dropIfExists('role_user');
  69. Schema::dropIfExists('roles');
  70. }
  71. }