public function sql() { $functions = "CREATE TABLE `function` (`id`\tINTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT UNIQUE, `type` TEXT, `description` TEXT"; $params = "CREATE TABLE `parameter` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `parameter` TEXT NOT NULL, `type` TEXT NOT NULL, `initializer`\tTEXT, `functionId` INTEGER NOT NULL"; $schema = new \Doctrine\DBAL\Schema\Schema(); $functions = $schema->createTable('function'); $functions->addColumn('id', 'integer', array('autoincrement' => true)); $functions->addColumn('name', 'text'); $functions->addColumn('type', 'text'); $functions->addColumn('description', 'text'); $functions->setPrimaryKey(array('id')); $functions->addUniqueIndex(array('name')); $schema->createSequence('function_seq'); $parameter = $schema->createTable('parameter'); $parameter->addColumn('id', 'integer', array('autoincrement' => true)); $parameter->addColumn('parameter', 'text'); $parameter->addColumn('type', 'text'); $parameter->addColumn('initializer', 'text'); $parameter->setPrimaryKey(array('id')); $schema->createSequence('parameter_seq'); $sql = $schema->toSql(new \Doctrine\DBAL\Platforms\SqlitePlatform()); var_dump($sql); die; }
public function convert(\Cti\Storage\Schema $inputSchema) { $schema = new \Doctrine\DBAL\Schema\Schema(); foreach ($inputSchema->getModels() as $model) { $table = $schema->createTable($model->getName()); foreach ($model->getProperties() as $property) { $params = array('comment' => $property->getComment(), 'notnull' => $property->getRequired()); $type = $property->getType(); if ($type === 'char') { $type = 'string'; $params['length'] = 1; } $table->addColumn($property->getName(), $type, $params); } $table->setPrimaryKey($model->getPk()); foreach ($model->getIndexes() as $index) { $table->addIndex($index->getFields()); } } foreach ($inputSchema->getModels() as $model) { $table = $schema->getTable($model->getName()); foreach ($model->getOutReferences() as $reference) { if ($inputSchema->getModel($reference->getDestination())->getBehaviour("log")) { continue; } $destination = $schema->getTable($reference->getDestination()); $foreignProperties = array(); foreach ($reference->getProperties() as $property) { $foreignProperties[] = $property->getForeignName(); } $localProperties = array_keys($reference->getProperties()); $table->addForeignKeyConstraint($destination, $localProperties, $foreignProperties); } } foreach ($inputSchema->getSequences() as $sequence) { $schema->createSequence($sequence->getName()); } return $schema; }
protected function createRoutes(Application $app) { $app->get('/reinstall', function () use($app) { /** @var \Doctrine\DBAL\Connection $conn */ $conn = $app['db']; /** @var \Doctrine\DBAL\Schema\AbstractSchemaManager $sm */ $sm = $conn->getSchemaManager(); $schema = new \Doctrine\DBAL\Schema\Schema(); $table = $schema->createTable('users'); $table->addColumn("id", "integer", ["unsigned" => true]); $table->addColumn("username", "string", ["length" => 32]); $table->addColumn("age", "integer", ["unsigned" => true]); $table->setPrimaryKey(["id"]); $table->addUniqueIndex(["username"]); $schema->createSequence("users_seq"); $sm->dropAndCreateTable($table); $table = $schema->createTable('messages'); $table->addColumn("id", "integer", ["unsigned" => true]); $table->addColumn("author", "string", ["length" => 32]); $table->addColumn("parent", "integer", ["unsigned" => true]); $table->addColumn("message", "string", ["length" => 256]); $table->setPrimaryKey(["id"]); $sm->dropAndCreateTable($table); return 'DB installed'; }); }