public function createDatabase($identifier = null) { $sourcesFolder = $this->path . "/" . Module::DIR_SOURCES; if (!is_dir($sourcesFolder)) { return; } $targetEntities = []; foreach (EntityReflection::getEntities($sourcesFolder) as $entityClassName) { if ($entityClassName::getSchema()->getDb() == $identifier) { $targetEntities[] = $entityClassName; } } if (!$targetEntities) { echo "No entities found (no tables to create)"; return; } $databaseSettings = Db::getCredentials($identifier); $databaseString = $databaseSettings["username"] . ($databaseSettings["password"] ? ':****' : '') . '@' . $databaseSettings["host"] . '/' . $databaseSettings["database"]; echo "Updating database {$databaseString}\n"; Db::create($identifier); foreach ($targetEntities as $entityClassName) { echo " patching table for {$entityClassName}\n"; try { $entityClassName::getSchema()->patch(); } catch (\Exception $e) { echo $entityClassName . ": " . $e->getMessage() . "\n"; } } foreach ($targetEntities as $entityClassName) { try { echo " checking triggers for {$entityClassName}\n"; $entityClassName::getSchema()->createTriggers(); } catch (\Exception $e) { echo $e->getMessage(); } } }