本文整理汇总了PHP中xmldb_index::getFields方法的典型用法代码示例。如果您正苦于以下问题:PHP xmldb_index::getFields方法的具体用法?PHP xmldb_index::getFields怎么用?PHP xmldb_index::getFields使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xmldb_index
的用法示例。
在下文中一共展示了xmldb_index::getFields方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: find_index_name
/**
* Given one xmldb_index, the function returns the name of the index in DB
* of false if it doesn't exist
*
* @param xmldb_table $xmldb_table table to be searched
* @param xmldb_index $xmldb_index the index to be searched
* @return string|bool Index name or false if no indexes are found.
* @throws ddl_table_missing_exception Thrown when table is not found.
*/
public function find_index_name(xmldb_table $xmldb_table, xmldb_index $xmldb_index)
{
// Calculate the name of the table
$tablename = $xmldb_table->getName();
// Check the table exists
if (!$this->table_exists($xmldb_table)) {
throw new ddl_table_missing_exception($tablename);
}
// Extract index columns
$indcolumns = $xmldb_index->getFields();
// Get list of indexes in table
$indexes = $this->mdb->get_indexes($tablename);
// Iterate over them looking for columns coincidence
foreach ($indexes as $indexname => $index) {
$columns = $index['columns'];
// Check if index matches queried index
$diferences = array_merge(array_diff($columns, $indcolumns), array_diff($indcolumns, $columns));
// If no differences, we have find the index
if (empty($diferences)) {
return $indexname;
}
}
// Arriving here, index not found
return false;
}
示例2: getCreateIndexSQL
/**
* Given one correct xmldb_index, returns the SQL statements
* needed to create it (in array).
*
* @param xmldb_table $xmldb_table The xmldb_table instance to create the index on.
* @param xmldb_index $xmldb_index The xmldb_index to create.
* @return array An array of SQL statements to create the index.
* @throws coding_exception Thrown if the xmldb_index does not validate with the xmldb_table.
*/
public function getCreateIndexSQL($xmldb_table, $xmldb_index)
{
if ($error = $xmldb_index->validateDefinition($xmldb_table)) {
throw new coding_exception($error);
}
$unique = '';
$suffix = 'ix';
if ($xmldb_index->getUnique()) {
$unique = ' UNIQUE';
$suffix = 'uix';
}
$index = 'CREATE' . $unique . ' INDEX ';
$index .= $this->getNameForObject($xmldb_table->getName(), implode(', ', $xmldb_index->getFields()), $suffix);
$index .= ' ON ' . $this->getTableName($xmldb_table);
$index .= ' (' . implode(', ', $this->getEncQuoted($xmldb_index->getFields())) . ')';
return array($index);
}
示例3: addIndex
/**
* Add one index to the table, allowing to specify the desired order
* If it's not specified, then the index is added at the end
* @param xmldb_index $index
* @param xmldb_object $after
*/
public function addIndex($index, $after = null)
{
// Detect duplicates first
if ($this->getIndex($index->getName())) {
throw new coding_exception('Duplicate index ' . $index->getName() . ' specified in table ' . $this->getName());
}
// Make sure there are no keys with the index column specs because they would collide.
$newfields = $index->getFields();
$allkeys = $this->getKeys();
foreach ($allkeys as $key) {
$fields = $key->getFields();
if ($fields === $newfields) {
throw new coding_exception('Key ' . $key->getName() . ' collides with index' . $index->getName() . ' specified in table ' . $this->getName());
}
}
// Calculate the previous and next indexes
$previndex = null;
$nextindex = null;
if (!$after) {
$allindexes = $this->getIndexes();
if (!empty($allindexes)) {
end($allindexes);
$previndex = $allindexes[key($allindexes)];
}
} else {
$previndex = $this->getIndex($after);
}
if ($previndex && $previndex->getNext()) {
$nextindex = $this->getIndex($previndex->getNext());
}
// Set current index previous and next attributes
if ($previndex) {
$index->setPrevious($previndex->getName());
$previndex->setNext($index->getName());
}
if ($nextindex) {
$index->setNext($nextindex->getName());
$nextindex->setPrevious($index->getName());
}
// Some more attributes
$index->setLoaded(true);
$index->setChanged(true);
// Add the new index
$this->indexes[] = $index;
// Reorder the indexes
$this->orderIndexes($this->indexes);
// Recalculate the hash
$this->calculateHash(true);
// We have one new index, so the table has changed
$this->setChanged(true);
}