private function addTimestamps() { $this->inputFields[] = GeneratorFieldsInputUtil::processFieldInput('created_at:timestamp', '', '', ['searchable' => false, 'fillable' => false, 'inForm' => false, 'inIndex' => false]); $this->inputFields[] = GeneratorFieldsInputUtil::processFieldInput('updated_at:timestamp', '', '', ['searchable' => false, 'fillable' => false, 'inForm' => false, 'inIndex' => false]); }
public static function generateFieldsFromTable($tableName) { $schema = DB::getDoctrineSchemaManager(); $platform = $schema->getDatabasePlatform(); $platform->registerDoctrineTypeMapping('enum', 'string'); $columns = $schema->listTableColumns($tableName); $primaryKey = static::getPrimaryKeyFromTable($tableName); $timestamps = static::getTimestampFieldNames(); $defaultSearchable = config('infyom.laravel_generator.options.tables_searchable_default', false); $fields = []; foreach ($columns as $column) { switch ($column->getType()->getName()) { case 'integer': $fieldInput = self::generateIntFieldInput($column->getName(), 'integer', $column); $type = 'number'; break; case 'smallint': $fieldInput = self::generateIntFieldInput($column->getName(), 'smallInteger', $column); $type = 'number'; break; case 'bigint': $fieldInput = self::generateIntFieldInput($column->getName(), 'bigInteger', $column); $type = 'number'; break; case 'boolean': $fieldInput = self::generateSingleFieldInput($column->getName(), 'boolean'); $type = 'text'; break; case 'datetime': $fieldInput = self::generateSingleFieldInput($column->getName(), 'dateTime'); $type = 'date'; break; case 'datetimetz': $fieldInput = self::generateSingleFieldInput($column->getName(), 'dateTimeTz'); $type = 'date'; break; case 'date': $fieldInput = self::generateSingleFieldInput($column->getName(), 'date'); $type = 'date'; break; case 'time': $fieldInput = self::generateSingleFieldInput($column->getName(), 'time'); $type = 'text'; break; case 'decimal': $fieldInput = self::generateDecimalInput($column); $type = 'number'; break; case 'float': $fieldInput = self::generateFloatInput($column); $type = 'number'; break; case 'string': $fieldInput = self::generateStringInput($column); $type = 'text'; break; case 'text': $fieldInput = self::generateTextInput($column); $type = 'textarea'; break; default: $fieldInput = self::generateTextInput($column); $type = 'text'; } if (strtolower($column->getName()) == 'password') { $type = 'password'; } elseif (strtolower($column->getName()) == 'email') { $type = 'email'; } if (!empty($fieldInput)) { $field = GeneratorFieldsInputUtil::processFieldInput($fieldInput, $type, '', ['searchable' => $defaultSearchable]); $columnName = $column->getName(); if ($columnName === $primaryKey) { $field['primary'] = true; $field['inFrom'] = false; $field['inIndex'] = false; $field['fillable'] = false; $field['searchable'] = false; } elseif (in_array($columnName, $timestamps)) { $field['fillable'] = false; $field['searchable'] = false; $field['inFrom'] = true; $field['inIndex'] = true; } $fields[] = $field; } } return $fields; }
private function getInputFromConsole() { $this->commandInfo('Specify fields for the model (skip id & timestamp fields, we will add it automatically)'); $this->commandInfo('Enter "exit" to finish'); $this->inputFields[] = GeneratorFieldsInputUtil::processFieldInput("id:integer", "", "", false, false); while (true) { $fieldInputStr = $this->commandObj->ask('Field: (field_name:field_database_type)', ''); if (empty($fieldInputStr) || $fieldInputStr == false || $fieldInputStr == 'exit') { break; } if (!GeneratorFieldsInputUtil::validateFieldInput($fieldInputStr)) { $this->commandError('Invalid Input. Try again'); continue; } if ($this->commandType == CommandData::$COMMAND_TYPE_SCAFFOLD or $this->commandType == CommandData::$COMMAND_TYPE_SCAFFOLD_API) { $htmlType = $this->commandObj->ask('Enter field html input type (text): ', 'text'); } else { $htmlType = ''; } $validations = $this->commandObj->ask('Enter validations: ', false); $searchable = $this->commandObj->ask('Is Searchable (y/N): ', false); $validations = $validations == false ? '' : $validations; if ($searchable) { $searchable = strtolower($searchable) == 'y' ? true : false; } $this->inputFields[] = GeneratorFieldsInputUtil::processFieldInput($fieldInputStr, $htmlType, $validations, $searchable); } }
public static function generateFieldsFromTable($tableName) { $schema = DB::getDoctrineSchemaManager(); $platform = $schema->getDatabasePlatform(); $platform->registerDoctrineTypeMapping('enum', 'string'); $columns = $schema->listTableColumns($tableName); $fields = []; foreach ($columns as $column) { switch ($column->getType()->getName()) { case 'integer': $fieldInput = self::generateIntFieldInput($column->getName(), 'integer', $column); $type = 'number'; break; case 'smallint': $fieldInput = self::generateIntFieldInput($column->getName(), 'smallInteger', $column); $type = 'number'; break; case 'bigint': $fieldInput = self::generateIntFieldInput($column->getName(), 'bigInteger', $column); $type = 'number'; break; case 'boolean': $fieldInput = self::generateSingleFieldInput($column->getName(), 'boolean'); $type = 'text'; break; case 'datetime': $fieldInput = self::generateSingleFieldInput($column->getName(), 'dateTime'); $type = 'date'; break; case 'datetimetz': $fieldInput = self::generateSingleFieldInput($column->getName(), 'dateTimeTz'); $type = 'date'; break; case 'date': $fieldInput = self::generateSingleFieldInput($column->getName(), 'date'); $type = 'date'; break; case 'time': $fieldInput = self::generateSingleFieldInput($column->getName(), 'time'); $type = 'text'; break; case 'decimal': $fieldInput = self::generateDecimalInput($column); $type = 'number'; break; case 'float': $fieldInput = self::generateFloatInput($column); $type = 'number'; break; case 'string': $fieldInput = self::generateStringInput($column); $type = 'text'; break; case 'text': $fieldInput = self::generateTextInput($column); $type = 'textarea'; break; default: $fieldInput = self::generateTextInput($column); $type = 'text'; } if (strtolower($column->getName()) == 'password') { $type = 'password'; } elseif (strtolower($column->getName()) == 'email') { $type = 'email'; } if (!empty($fieldInput)) { $fields[] = GeneratorFieldsInputUtil::processFieldInput($fieldInput, $type, '', false); } } return $fields; }