/**
  * Run the migrations.
  */
 public function up()
 {
     Schema::create('gedcom_form_structure', function (Blueprint $table) {
         $table->increments('id');
         $table->unsignedInteger('gedcom_form_id')->index();
         $table->unsignedInteger('version_number_id')->index();
         // Composite keys
         $table->unique(['gedcom_form_id', 'version_number_id']);
         // Foreign keys
         $table->foreign('gedcom_form_id')->references('id')->on('gedcom_form');
         $table->foreign('version_number_id')->references('id')->on('version_number');
     });
     DB::transaction(function () {
         GedcomFormStructure::unguard();
         foreach ($this->data as $datum) {
             $gedcom_form = GedcomForm::where(['value' => $datum['gedcom_form']])->firstOrFail();
             $version_number = VersionNumber::where(['value' => $datum['version_number']])->firstOrFail();
             $gedcom_form_structure = new GedcomFormStructure();
             $gedcom_form_structure->gedcomForm()->associate($gedcom_form);
             $gedcom_form_structure->versionNumber()->associate($version_number);
             $gedcom_form_structure->save();
         }
         GedcomFormStructure::reguard();
     });
 }
 /**
  * Run the migrations.
  */
 public function up()
 {
     Schema::create('gedcom_form', function (Blueprint $table) {
         $table->increments('id');
         $table->string('value', GedcomSpecification::LENGTH_GEDCOM_FORM)->unique();
         $table->boolean('standard')->default(false);
     });
     DB::transaction(function () {
         GedcomForm::unguard();
         foreach ($this->data as $datum) {
             GedcomForm::create($datum);
         }
         GedcomForm::reguard();
     });
 }