本文整理汇总了PHP中Propel\Generator\Model\Database::getTable方法的典型用法代码示例。如果您正苦于以下问题:PHP Database::getTable方法的具体用法?PHP Database::getTable怎么用?PHP Database::getTable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Propel\Generator\Model\Database
的用法示例。
在下文中一共展示了Database::getTable方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: setupReferrers
/**
* Browses the foreign keys and creates referrers for the foreign table.
* This method can be called several times on the same table. It only
* adds the missing referrers and is non-destructive.
* Warning: only use when all the tables were created.
*
* @param boolean $throwErrors
* @throws BuildException
*/
public function setupReferrers($throwErrors = false)
{
foreach ($this->foreignKeys as $foreignKey) {
// table referrers
$foreignTable = $this->database->getTable($foreignKey->getForeignTableName());
if (null !== $foreignTable) {
$referrers = $foreignTable->getReferrers();
if (null === $referrers || !in_array($foreignKey, $referrers, true)) {
$foreignTable->addReferrer($foreignKey);
}
} elseif ($throwErrors) {
throw new BuildException(sprintf('Table "%s" contains a foreign key to nonexistent table "%s"', $this->getName(), $foreignKey->getForeignTableName()));
}
// foreign pk's
$localColumnNames = $foreignKey->getLocalColumns();
foreach ($localColumnNames as $localColumnName) {
$localColumn = $this->getColumn($localColumnName);
if (null !== $localColumn) {
if ($localColumn->isPrimaryKey() && !$this->getContainsForeignPK()) {
$this->setContainsForeignPK(true);
}
} elseif ($throwErrors) {
// give notice of a schema inconsistency.
// note we do not prevent the npe as there is nothing
// that we can do, if it is to occur.
throw new BuildException(sprintf('Table "%s" contains a foreign key with nonexistent local column "%s"', $this->getName(), $localColumnName));
}
}
// foreign column references
$foreignColumnNames = $foreignKey->getForeignColumns();
foreach ($foreignColumnNames as $foreignColumnName) {
if (null === $foreignTable) {
continue;
}
$foreignColumn = $foreignTable->getColumn($foreignColumnName);
if (null !== $foreignColumn) {
if (!$foreignColumn->hasReferrer($foreignKey)) {
$foreignColumn->addReferrer($foreignKey);
}
} elseif ($throwErrors && !$foreignKey->isPolymorphic()) {
// if the foreign column does not exist, we may have an
// external reference or a misspelling
throw new BuildException(sprintf('Table "%s" contains a foreign key to table "%s" with nonexistent column "%s"', $this->getName(), $foreignTable->getName(), $foreignColumnName));
}
}
if ($this->getPlatform() instanceof MysqlPlatform) {
$this->addExtraIndices();
}
}
}
示例2: compareTables
/**
* Returns the number of differences.
*
* Compares the tables of the fromDatabase and the toDatabase, and modifies
* the inner databaseDiff if necessary.
*
* @param boolean $caseInsensitive
* @return integer
*/
public function compareTables($caseInsensitive = false)
{
$fromDatabaseTables = $this->fromDatabase->getTables();
$toDatabaseTables = $this->toDatabase->getTables();
$databaseDifferences = 0;
$platform = $this->toDatabase->getPlatform() ?: $this->fromDatabase->getPlatform();
// check for new tables in $toDatabase
foreach ($toDatabaseTables as $table) {
if ($platform) {
$platform->normalizeTable($table);
}
if (!$this->fromDatabase->hasTable($table->getName(), $caseInsensitive) && !$table->isSkipSql()) {
$this->databaseDiff->addAddedTable($table->getName(), $table);
$databaseDifferences++;
}
}
// check for removed tables in $toDatabase
foreach ($fromDatabaseTables as $table) {
if (!$this->toDatabase->hasTable($table->getName(), $caseInsensitive) && !$table->isSkipSql()) {
$this->databaseDiff->addRemovedTable($table->getName(), $table);
$databaseDifferences++;
}
}
// check for table differences
foreach ($fromDatabaseTables as $fromTable) {
if ($this->toDatabase->hasTable($fromTable->getName(), $caseInsensitive)) {
$toTable = $this->toDatabase->getTable($fromTable->getName(), $caseInsensitive);
$databaseDiff = TableComparator::computeDiff($fromTable, $toTable, $caseInsensitive);
if ($databaseDiff) {
$this->databaseDiff->addModifiedTable($fromTable->getName(), $databaseDiff);
$databaseDifferences++;
}
}
}
$renamed = [];
// check for table renamings
foreach ($this->databaseDiff->getAddedTables() as $addedTableName => $addedTable) {
foreach ($this->databaseDiff->getRemovedTables() as $removedTableName => $removedTable) {
if (!in_array($addedTableName, $renamed) && !TableComparator::computeDiff($addedTable, $removedTable, $caseInsensitive)) {
// no difference except the name, that's probably a renaming
$renamed[] = $addedTableName;
$this->databaseDiff->addRenamedTable($removedTableName, $addedTableName);
$this->databaseDiff->removeAddedTable($addedTableName);
$this->databaseDiff->removeRemovedTable($removedTableName);
$databaseDifferences--;
}
}
}
return $databaseDifferences;
}
示例3: compareTables
/**
* Returns the number of differences.
*
* Compares the tables of the fromDatabase and the toDatabase, and modifies
* the inner databaseDiff if necessary.
*
* @param boolean $caseInsensitive
* @return integer
*/
public function compareTables($caseInsensitive = false)
{
$fromDatabaseTables = $this->fromDatabase->getTables();
$toDatabaseTables = $this->toDatabase->getTables();
$databaseDifferences = 0;
// check for new tables in $toDatabase
foreach ($toDatabaseTables as $table) {
if ($this->isTableExcluded($table)) {
continue;
}
if (!$this->fromDatabase->hasTable($table->getName(), $caseInsensitive) && !$table->isSkipSql()) {
$this->databaseDiff->addAddedTable($table->getName(), $table);
$databaseDifferences++;
}
}
// check for removed tables in $toDatabase
if ($this->getRemoveTable()) {
foreach ($fromDatabaseTables as $table) {
if ($this->isTableExcluded($table)) {
continue;
}
if (!$this->toDatabase->hasTable($table->getName(), $caseInsensitive) && !$table->isSkipSql()) {
$this->databaseDiff->addRemovedTable($table->getName(), $table);
$databaseDifferences++;
}
}
}
// check for table differences
foreach ($fromDatabaseTables as $fromTable) {
if ($this->isTableExcluded($fromTable)) {
continue;
}
if ($this->toDatabase->hasTable($fromTable->getName(), $caseInsensitive)) {
$toTable = $this->toDatabase->getTable($fromTable->getName(), $caseInsensitive);
$databaseDiff = TableComparator::computeDiff($fromTable, $toTable, $caseInsensitive);
if ($databaseDiff) {
$this->databaseDiff->addModifiedTable($fromTable->getName(), $databaseDiff);
$databaseDifferences++;
}
}
}
// check for table renamings
foreach ($this->databaseDiff->getAddedTables() as $addedTableName => $addedTable) {
foreach ($this->databaseDiff->getRemovedTables() as $removedTableName => $removedTable) {
if (!TableComparator::computeDiff($addedTable, $removedTable, $caseInsensitive)) {
// no difference except the name, that's probably a renaming
if ($this->getWithRenaming()) {
$this->databaseDiff->addRenamedTable($removedTableName, $addedTableName);
$this->databaseDiff->removeAddedTable($addedTableName);
$this->databaseDiff->removeRemovedTable($removedTableName);
$databaseDifferences--;
} else {
$this->databaseDiff->addPossibleRenamedTable($removedTableName, $addedTableName);
}
// skip to the next added table
break;
}
}
}
return $databaseDifferences;
}
示例4: testAddArrayTable
public function testAddArrayTable()
{
$database = new Database();
$database->addTable(['name' => 'books']);
$database->addTable(['name' => 'authors']);
$database->addTable(['name' => 'categories', 'skipSql' => 'true']);
$database->addTable(['name' => 'publishers', 'readOnly' => 'true']);
$this->assertTrue($database->hasTable('books'));
$this->assertTrue($database->hasTable('books', true));
$this->assertFalse($database->hasTable('BOOKS'));
$this->assertTrue($database->hasTableByPhpName('Books'));
$this->assertInstanceOf('Propel\\Generator\\Model\\Table', $database->getTable('books'));
$this->assertInstanceOf('Propel\\Generator\\Model\\Table', $database->getTableByPhpName('Books'));
// 3 tables because read only table is excluded from the count
$this->assertSame(3, $database->countTables());
// 3 tables because skipped sql table is excluded from the count
$this->assertCount(3, $database->getTablesForSql());
}