increments('id'); $table->string('disk', 32); $table->string('directory', 68); $table->string('filename', 121); $table->string('extension', 28); $table->string('mime_type', 128); $table->string('aggregate_type', 32); $table->integer('size')->unsigned(); $table->timestamps(); $table->softDeletes(); $table->index(['disk', 'directory']); $table->unique(['disk', 'directory', 'filename', 'extension']); $table->index('aggregate_type'); }); Schema::create('mediables', function (Blueprint $table) { $table->integer('media_id')->unsigned(); $table->string('mediable_type', 152); $table->integer('mediable_id')->unsigned(); $table->string('tag', 68); $table->integer('order')->unsigned(); $table->primary(['media_id', 'mediable_type', 'mediable_id', 'tag']); $table->index(['mediable_id', 'mediable_type']); $table->index('tag'); $table->index('order'); $table->foreign('media_id')->references('id')->on('media')->onDelete('cascade'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('mediables'); Schema::drop('media'); } }