private function _exec_table_builder($table_name, $fields_to_add)
{
$table_name = $this->assoc_table_name($table_name);
if (!Schema::hasTable($table_name)) {
Schema::create($table_name, function ($table) {
$table->increments('id');
});
}
if (is_array($fields_to_add)) {
Schema::table($table_name, function ($schema) use($fields_to_add, $table_name) {
foreach ($fields_to_add as $name => $meta) {
$is_index = substr($name, 0, 1) === '$';
$is_default = null;
$is_nullable = true;
if (!$is_index) {
if (is_array($meta)) {
if (!isset($meta['type'])) {
$name = array_shift($meta);
$type = array_shift($meta);
} else {
$type = $meta['type'];
}
if (isset($meta['default'])) {
$is_default = $meta['default'];
if ($is_default == 'not_null') {
$is_nullable = false;
}
}
} else {
$type = $meta;
}
if (!Schema::hasColumn($table_name, $name)) {
$fluent = $schema->{$type}($name);
if ($is_default !== null) {
$fluent->default($is_default)->nullable();
}
if ($is_nullable) {
$fluent->nullable();
}
}
}
}
});
}
}