commandData = $commandData; $this->path = $commandData->config->pathFactory; $this->fileName = Str::studly(Str::singular($this->commandData->modelName)).'Factory.php'; } public function generate() { $templateData = $this->generatorHelpers->get_template('Factories.model_factory'); $templateData = $this->fillTemplate($templateData); FileUtil::createFile($this->path, $this->fileName, $templateData); $this->commandData->commandObj->comment("\nFactory created: "); $this->commandData->commandObj->info($this->fileName); } /** * @param string $templateData * * @return mixed|string */ private function fillTemplate($templateData) { $templateData = $this->generatorHelpers->fill_template($this->commandData->dynamicVars, $templateData); $templateData = str_replace( '$FIELDS$', implode(','.$this->generatorHelpers->generator_nl_tab(1, 2), $this->generateFields()), $templateData ); return $templateData; } /** * @return array */ private function generateFields() { $fields = []; foreach ($this->commandData->fields as $field) { if ($field->isPrimary) { continue; } $fieldData = "'".$field->name."' => ".'$faker->'; switch ($field->fieldType) { case 'integer': case 'float': $fakerData = 'randomDigitNotNull'; break; case 'string': $fakerData = 'word'; break; case 'text': $fakerData = 'text'; break; case 'datetime': case 'timestamp': $fakerData = "date('Y-m-d H:i:s')"; break; case 'enum': $fakerData = 'randomElement('. GeneratorFieldsInputUtil::prepareValuesArrayStr($field->htmlValues). ')'; break; default: $fakerData = 'word'; } $fieldData .= $fakerData; $fields[] = $fieldData; } return $fields; } public function rollback() { if ($this->rollbackFile($this->path, $this->fileName)) { $this->commandData->commandComment('Factory file deleted: '.$this->fileName); } } }