private function generateRelations() { if ($this->commandData->tableName == '') { return ''; } $code = ''; //Get what tables it belongs to $relations = DataBaseHelper::getForeignKeysFromTable($this->commandData->tableName); foreach ($relations as $r) { $referencedTableName = preg_replace("/{$this->prefix}/uis", '', $r->REFERENCED_TABLE_NAME); $referencedTableName = ucfirst(Str::camel(StringUtils::singularize($referencedTableName))); $code .= " public function " . $referencedTableName . "() {\n"; $code .= " " . 'return $this->belongsTo(' . "'\$NAMESPACE_MODEL\$\\" . $referencedTableName . "', '" . $r->COLUMN_NAME . "'); \n"; $code .= " }\n\n"; } //Get what tables it is referenced $relations = DataBaseHelper::getReferencesFromTable($this->commandData->tableName); foreach ($relations as $r) { $tableName = preg_replace("/{$this->prefix}/uis", '', $r->TABLE_NAME); $tableName = ucfirst(Str::camel(StringUtils::singularize($tableName))); $code .= " public function " . Str::plural($tableName) . "() {\n"; $code .= " " . 'return $this->hasMany(' . "'\$NAMESPACE_MODEL\$\\" . $tableName . "', '" . $r->COLUMN_NAME . "'); \n"; $code .= " }\n\n"; } return $code; }
public function initDynamicVariables() { $this->dynamicVars = self::getConfigDynamicVariables(); $this->dynamicVars = array_merge($this->dynamicVars, ['$MODEL_NAME$' => $this->modelName, '$MODEL_NAME_CAMEL$' => $this->modelNameCamel, '$MODEL_NAME_PLURAL$' => $this->modelNamePlural, '$MODEL_NAME_PLURAL_CAMEL$' => $this->modelNamePluralCamel, '$DISPLAY_ATTRIBUTE$' => DataBaseHelper::getColumnFromTable($this->tableName)]); if ($this->tableName) { $this->dynamicVars['$TABLE_NAME$'] = $this->tableName; } else { $this->dynamicVars['$TABLE_NAME$'] = $this->modelNamePluralCamel; } }
private function generateRelations() { if ($this->commandData->tableName == '') { return ''; } $code = ''; //Get what tables it belongs to $relations = DataBaseHelper::getForeignKeysFromTable($this->commandData->tableName); foreach ($relations as $r) { $code .= "\tpublic function " . StringUtils::singularize($r->REFERENCED_TABLE_NAME) . "() {\n"; $code .= "\t\t" . 'return $this->belongsTo(' . "\$NAMESPACE_MODEL\$\\" . ucfirst(Str::camel(StringUtils::singularize($r->REFERENCED_TABLE_NAME))) . "::class, '" . $r->COLUMN_NAME . "'); \n"; $code .= "\t}\n\n"; } //Get what tables it is referended $relations = DataBaseHelper::getReferencesFromTable($this->commandData->tableName); foreach ($relations as $r) { $code .= "\tpublic function " . Str::plural($r->TABLE_NAME) . "() {\n"; $code .= "\t\t" . 'return $this->hasMany(' . "\$NAMESPACE_MODEL\$\\" . ucfirst(Str::camel(StringUtils::singularize($r->TABLE_NAME))) . "::class, '" . $r->COLUMN_NAME . "'); \n"; $code .= "\t}\n\n"; } return $code; }
public function generateFieldsFromTable() { $this->schema->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); $columns = $this->schema->listTableColumns($this->tableName); $fields = []; foreach ($columns as $column) { switch ($column->getType()->getName()) { case 'integer': $fieldInput = $this->generateIntFieldInput($column->getName(), 'integer', $column); if (strpos($column->getName(), '_id') > 0) { $type = 'select'; $tableSourceName = $this->checkForForeignKeySourceTable($column->getName()); $columnName = DataBaseHelper::getColumnFromTable($tableSourceName); if ($tableSourceName != '') { $type .= ':' . $tableSourceName . ':' . $columnName; } } else { $type = 'number'; } break; case 'tinyint': $fieldInput = $this->generateIntFieldInput($column->getName(), 'tinyInteger', $column); $type = 'checkbox'; break; case 'smallint': $fieldInput = $this->generateIntFieldInput($column->getName(), 'smallInteger', $column); $type = 'number'; break; case 'bigint': $fieldInput = $this->generateIntFieldInput($column->getName(), 'bigInteger', $column); $type = 'number'; break; case 'boolean': $fieldInput = $this->generateSingleFieldInput($column->getName(), 'boolean'); $type = 'checkbox'; break; case 'datetime': $fieldInput = $this->generateSingleFieldInput($column->getName(), 'dateTime'); $type = 'date'; break; case 'datetimetz': $fieldInput = $this->generateSingleFieldInput($column->getName(), 'dateTimeTz'); $type = 'date'; break; case 'date': $fieldInput = $this->generateSingleFieldInput($column->getName(), 'date'); $type = 'date'; break; case 'time': $fieldInput = $this->generateSingleFieldInput($column->getName(), 'time'); $type = 'text'; break; case 'decimal': $fieldInput = $this->generateDecimalInput($column, 'decimal'); $type = 'number'; break; case 'float': $fieldInput = $this->generateFloatInput($column); $type = 'number'; break; case 'string': $fieldInput = $this->generateStringInput($column); $type = 'text'; break; case 'text': $fieldInput = $this->generateTextInput($column); $type = 'textarea'; break; default: $fieldInput = $this->generateTextInput($column); $type = 'text'; } if (strtolower($column->getName()) == 'password') { $type = 'password'; } elseif (strtolower($column->getName()) == 'email') { $type = 'email'; } if (!empty($fieldInput)) { // $fieldInput .= $this->checkForDefault($column); // $fieldInput .= $this->checkForNullable($column); // $fieldInput .= $this->checkForUnique($column); $fields[] = GeneratorUtils::processFieldInput($fieldInput, $type, $this->getValidations($column)); } } return $fields; }