本文整理汇总了PHP中OC\DB\Connection::getSchemaManager方法的典型用法代码示例。如果您正苦于以下问题:PHP Connection::getSchemaManager方法的具体用法?PHP Connection::getSchemaManager怎么用?PHP Connection::getSchemaManager使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OC\DB\Connection
的用法示例。
在下文中一共展示了Connection::getSchemaManager方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: dropTable
/**
* @brief drop a table
* @param string $tableName the table to drop
*/
public function dropTable($tableName)
{
$sm = $this->conn->getSchemaManager();
$fromSchema = $sm->createSchema();
$toSchema = clone $fromSchema;
$toSchema->dropTable($tableName);
$sql = $fromSchema->getMigrateToSql($toSchema, $this->conn->getDatabasePlatform());
$this->conn->executeQuery($sql);
}
示例2: run
/**
* Fix mime types
*/
public function run(IOutput $out)
{
if (!$this->connection->getDatabasePlatform() instanceof SqlitePlatform) {
return;
}
$sourceSchema = $this->connection->getSchemaManager()->createSchema();
$schemaDiff = new SchemaDiff();
foreach ($sourceSchema->getTables() as $tableSchema) {
$primaryKey = $tableSchema->getPrimaryKey();
if (!$primaryKey) {
continue;
}
$columnNames = $primaryKey->getColumns();
// add a column diff for every primary key column,
// but do not actually change anything, this will
// force the generation of SQL statements to alter
// those tables, which will then trigger the
// specific SQL code from OCSqlitePlatform
try {
$tableDiff = new TableDiff($tableSchema->getName());
$tableDiff->fromTable = $tableSchema;
foreach ($columnNames as $columnName) {
$columnSchema = $tableSchema->getColumn($columnName);
$columnDiff = new ColumnDiff($columnSchema->getName(), $columnSchema);
$tableDiff->changedColumns[] = $columnDiff;
$schemaDiff->changedTables[] = $tableDiff;
}
} catch (SchemaException $e) {
// ignore
}
}
$this->connection->beginTransaction();
foreach ($schemaDiff->toSql($this->connection->getDatabasePlatform()) as $sql) {
$this->connection->query($sql);
}
$this->connection->commit();
}
示例3: saveSchemaToFile
/**
* @param string $file
* @param \OC\DB\Connection $conn
* @return bool
*/
public static function saveSchemaToFile($file, \OC\DB\Connection $conn)
{
$config = \OC::$server->getConfig();
$xml = new SimpleXMLElement('<database/>');
$xml->addChild('name', $config->getSystemValue('dbname', 'owncloud'));
$xml->addChild('create', 'true');
$xml->addChild('overwrite', 'false');
$xml->addChild('charset', 'utf8');
$conn->getConfiguration()->setFilterSchemaAssetsExpression('/^' . $config->getSystemValue('dbtableprefix', 'oc_') . '/');
foreach ($conn->getSchemaManager()->listTables() as $table) {
self::saveTable($table, $xml->addChild('table'));
}
file_put_contents($file, $xml->asXML());
return true;
}
示例4: resynchronizeDatabaseSequences
/**
* @brief Resynchronizes all sequences of a database after using INSERTs
* without leaving out the auto-incremented column.
* @param \OC\DB\Connection $conn
* @return null
*/
public function resynchronizeDatabaseSequences(Connection $conn)
{
$databaseName = $conn->getDatabase();
$conn->getConfiguration()->setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
foreach ($conn->getSchemaManager()->listSequences() as $sequence) {
$sequenceName = $sequence->getName();
$sqlInfo = 'SELECT table_schema, table_name, column_name
FROM information_schema.columns
WHERE column_default = ? AND table_catalog = ?';
$sequenceInfo = $conn->fetchAssoc($sqlInfo, array("nextval('{$sequenceName}'::regclass)", $databaseName));
$tableName = $sequenceInfo['table_name'];
$columnName = $sequenceInfo['column_name'];
$sqlMaxId = "SELECT MAX({$columnName}) FROM {$tableName}";
$sqlSetval = "SELECT setval('{$sequenceName}', ({$sqlMaxId}))";
$conn->executeQuery($sqlSetval);
}
}
示例5: saveSchemaToFile
/**
* @param string $file
* @param \OC\DB\Connection $conn
* @return bool
*/
public static function saveSchemaToFile($file, \OC\DB\Connection $conn)
{
$config = \OC::$server->getConfig();
$xml = new SimpleXMLElement('<database/>');
$xml->addChild('name', $config->getSystemValue('dbname', 'owncloud'));
$xml->addChild('create', 'true');
$xml->addChild('overwrite', 'false');
$xml->addChild('charset', 'utf8');
// FIX ME: bloody work around
if ($config->getSystemValue('dbtype', 'sqlite') === 'oci') {
$filterExpression = '/^"' . preg_quote($conn->getPrefix()) . '/';
} else {
$filterExpression = '/^' . preg_quote($conn->getPrefix()) . '/';
}
$conn->getConfiguration()->setFilterSchemaAssetsExpression($filterExpression);
foreach ($conn->getSchemaManager()->listTables() as $table) {
self::saveTable($table, $xml->addChild('table'));
}
file_put_contents($file, $xml->asXML());
return true;
}
示例6: getDbStructure
/**
* saves database scheme to xml file
* @param string $file name of file
* @param int|string $mode
* @return bool
*
* TODO: write more documentation
*/
public function getDbStructure($file, $mode = MDB2_SCHEMA_DUMP_STRUCTURE)
{
$sm = $this->conn->getSchemaManager();
return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $sm);
}
示例7: getTables
protected function getTables(Connection $db)
{
return $db->getSchemaManager()->listTableNames();
}
示例8: getTables
protected function getTables(Connection $db)
{
$db->getConfiguration()->setFilterSchemaAssetsExpression('/^' . $this->config->getSystemValue('dbtableprefix', 'oc_') . '/');
return $db->getSchemaManager()->listTableNames();
}