AddFacetingTables::up PHP Method

up() public method

Run the migrations.
public up ( ) : void
return void
    public function up()
    {
        Schema::create('definition_facet_types', function ($table) {
            $table->increments('id');
            $table->string('facet_name', 255);
        });
        $facet_types = ['rights', 'keyword', 'language', 'theme', 'publisher_name'];
        $facet_type_models = [];
        foreach ($facet_types as $facet) {
            $facet_type = \FacetType::create(['facet_name' => $facet]);
            $facet_type->save();
            if ($facet != 'keyword') {
                $facet_type_model[$facet] = $facet_type;
            } else {
                $facet_type_model['keywords'] = $facet_type;
            }
        }
        Schema::create('definition_facets', function ($table) {
            $table->increments('id');
            $table->integer('definition_id');
            $table->integer('facet_id');
            $table->string('facet_name');
            $table->string('value');
        });
        // Copy all of the facet related info to the new definition_facets table
        $definitions = \Definition::all();
        foreach ($definitions as $definition) {
            foreach ($facet_type_models as $facet_name => $facet_type) {
                if ($facet_name != 'keywords' && !empty($definition->{$facet_name})) {
                    $facet = \Facet::create(['definition_id' => $definition->id, 'facet_id' => $facet_type->id, 'facet_name' => $facet_name, 'value' => $definition->{$facet_name}]);
                    $facet->save();
                } else {
                    // split the keywords
                    if (!empty($definition->keywords)) {
                        $keywords = explode(',', $definition->keywords);
                        foreach ($keywords as $keyword) {
                            $facet = \Facet::create(['definition_id' => $definition->id, 'facet_id' => $facet_type->id, 'facet_name' => 'keyword', 'value' => $keyword]);
                            $facet->save();
                        }
                    }
                }
            }
        }
    }
AddFacetingTables