2018_06_25_014048_create_permission_tables.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. use Illuminate\Support\Facades\Schema;
  3. use Illuminate\Database\Schema\Blueprint;
  4. use Illuminate\Database\Migrations\Migration;
  5. class CreatePermissionTables extends Migration
  6. {
  7. /**
  8. * Run the migrations.
  9. *
  10. * @return void
  11. */
  12. public function up()
  13. {
  14. $tableNames = config('permission.table_names');
  15. Schema::create($tableNames['permissions'], function (Blueprint $table) {
  16. $table->increments('id');
  17. $table->string('name');
  18. $table->string('guard_name');
  19. $table->string('display_name');
  20. $table->string('route')->nullable()->comment('路由名称');
  21. $table->integer('icon_id')->nullable()->comment('图标ID');
  22. $table->integer('parent_id')->default(0);
  23. $table->integer('sort')->default(0)->comment('排序');
  24. $table->timestamps();
  25. });
  26. Schema::create($tableNames['roles'], function (Blueprint $table) {
  27. $table->increments('id');
  28. $table->string('name');
  29. $table->string('guard_name');
  30. $table->string('display_name');
  31. $table->timestamps();
  32. });
  33. Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames) {
  34. $table->unsignedInteger('permission_id');
  35. $table->morphs('model');
  36. $table->foreign('permission_id')
  37. ->references('id')
  38. ->on($tableNames['permissions'])
  39. ->onDelete('cascade');
  40. $table->primary(['permission_id', 'model_id', 'model_type'], 'model_has_permissions_permission_model_type_primary');
  41. });
  42. Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames) {
  43. $table->unsignedInteger('role_id');
  44. $table->morphs('model');
  45. $table->foreign('role_id')
  46. ->references('id')
  47. ->on($tableNames['roles'])
  48. ->onDelete('cascade');
  49. $table->primary(['role_id', 'model_id', 'model_type']);
  50. });
  51. Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
  52. $table->unsignedInteger('permission_id');
  53. $table->unsignedInteger('role_id');
  54. $table->foreign('permission_id')
  55. ->references('id')
  56. ->on($tableNames['permissions'])
  57. ->onDelete('cascade');
  58. $table->foreign('role_id')
  59. ->references('id')
  60. ->on($tableNames['roles'])
  61. ->onDelete('cascade');
  62. $table->primary(['permission_id', 'role_id']);
  63. app('cache')->forget('spatie.permission.cache');
  64. });
  65. }
  66. /**
  67. * Reverse the migrations.
  68. *
  69. * @return void
  70. */
  71. public function down()
  72. {
  73. $tableNames = config('permission.table_names');
  74. Schema::drop($tableNames['role_has_permissions']);
  75. Schema::drop($tableNames['model_has_roles']);
  76. Schema::drop($tableNames['model_has_permissions']);
  77. Schema::drop($tableNames['roles']);
  78. Schema::drop($tableNames['permissions']);
  79. }
  80. }