down(); Schema::create('modes', function (Blueprint $table) { $table->id(); $table->timestamps(); $table->string('name',16); $table->string('note',255)->nullable(); $table->unique(['name']); }); Schema::create('cugs', function (Blueprint $table) { $table->id(); $table->timestamps(); $table->string('name', 16); $table->string('description', 255)->nullable(); $table->integer('parent_id')->nullable(); $table->foreign('parent_id')->references('id')->on('cugs'); $table->unique(['name']); $table->softDeletes(); }); Schema::create('cug_users', function (Blueprint $table) { $table->integer('cug_id')->unsigned(); $table->foreign('cug_id')->references('id')->on('cugs'); $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users'); $table->boolean('owner'); $table->unique(['user_id','cug_id']); }); Schema::create('frames', function (Blueprint $table) { $table->id(); $table->timestamps(); $table->integer('frame')->unsigned(); $table->char('index', 1); $table->string('r0')->nullable(); $table->string('r1')->nullable(); $table->string('r2')->nullable(); $table->string('r3')->nullable(); $table->string('r4')->nullable(); $table->string('r5')->nullable(); $table->string('r6')->nullable(); $table->string('r7')->nullable(); $table->string('r8')->nullable(); $table->string('r9')->nullable(); $table->string('type', 2); $table->smallInteger('cost')->default(0); $table->boolean('access')->default(FALSE); $table->boolean('public')->default(FALSE); $table->binary('content'); $table->string('title',16)->nullable(); $table->string('note', 255)->nullable(); $table->boolean('cls')->default(TRUE); //$table->unique(['frame','index','mode_id']); // Not needed since we have timewarp $table->integer('mode_id')->unsigned(); $table->foreign('mode_id')->references('id')->on('modes'); $table->integer('cug_id')->unsigned()->default(0); $table->foreign('cug_id')->references('id')->on('cugs'); $table->softDeletes(); }); DB::statement(" CREATE VIEW frame_view AS ( SELECT F.id, F.frame || F.index as page,F.type,F.access,F.public,F.cls,C.name as cug,M.name as mode,F.cost,F.title, F.r0,F.r1,F.r2,F.r3,F.r4,F.r5,F.r6,F.r7,F.r8,F.r9 FROM frames F LEFT JOIN cugs C ON C.id=F.cug_id LEFT JOIN modes M ON M.id=F.mode_id ORDER BY F.mode_id,F.frame,F.index ) "); } /** * Reverse the migrations. * * @return void */ public function down() { DB::statement('DROP VIEW IF EXISTS frame_view'); Schema::dropIfExists('frames'); Schema::dropIfExists('cug_users'); Schema::dropIfExists('cugs'); Schema::dropIfExists('modes'); } };