本文整理汇总了PHP中xmldb_table::validateDefinition方法的典型用法代码示例。如果您正苦于以下问题:PHP xmldb_table::validateDefinition方法的具体用法?PHP xmldb_table::validateDefinition怎么用?PHP xmldb_table::validateDefinition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xmldb_table
的用法示例。
在下文中一共展示了xmldb_table::validateDefinition方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getCreateTableSQL
/**
* Given one correct xmldb_table, returns the SQL statements
* to create it (inside one array).
*
* @param xmldb_table $xmldb_table An xmldb_table instance.
* @return array An array of SQL statements, starting with the table creation SQL followed
* by any of its comments, indexes and sequence creation SQL statements.
*/
public function getCreateTableSQL($xmldb_table)
{
if ($error = $xmldb_table->validateDefinition()) {
throw new coding_exception($error);
}
$results = array();
//Array where all the sentences will be stored
/// Table header
$table = 'CREATE TABLE ' . $this->getTableName($xmldb_table) . ' (';
if (!($xmldb_fields = $xmldb_table->getFields())) {
return $results;
}
$sequencefield = null;
/// Add the fields, separated by commas
foreach ($xmldb_fields as $xmldb_field) {
if ($xmldb_field->getSequence()) {
$sequencefield = $xmldb_field->getName();
}
$table .= "\n " . $this->getFieldSQL($xmldb_table, $xmldb_field);
$table .= ',';
}
/// Add the keys, separated by commas
if ($xmldb_keys = $xmldb_table->getKeys()) {
foreach ($xmldb_keys as $xmldb_key) {
if ($keytext = $this->getKeySQL($xmldb_table, $xmldb_key)) {
$table .= "\nCONSTRAINT " . $keytext . ',';
}
/// If the key is XMLDB_KEY_FOREIGN_UNIQUE, create it as UNIQUE too
if ($xmldb_key->getType() == XMLDB_KEY_FOREIGN_UNIQUE) {
///Duplicate the key
$xmldb_key->setType(XMLDB_KEY_UNIQUE);
if ($keytext = $this->getKeySQL($xmldb_table, $xmldb_key)) {
$table .= "\nCONSTRAINT " . $keytext . ',';
}
}
/// make sure sequence field is unique
if ($sequencefield and $xmldb_key->getType() == XMLDB_KEY_PRIMARY) {
$field = reset($xmldb_key->getFields());
if ($sequencefield === $field) {
$sequencefield = null;
}
}
}
}
/// throw error if sequence field does not have unique key defined
if ($sequencefield) {
throw new ddl_exception('ddsequenceerror', $xmldb_table->getName());
}
/// Table footer, trim the latest comma
$table = trim($table, ',');
$table .= "\n)";
/// Add the CREATE TABLE to results
$results[] = $table;
/// Add comments if specified and it exists
if ($this->add_table_comments && $xmldb_table->getComment()) {
$comment = $this->getCommentSQL($xmldb_table);
/// Add the COMMENT to results
$results = array_merge($results, $comment);
}
/// Add the indexes (each one, one statement)
if ($xmldb_indexes = $xmldb_table->getIndexes()) {
foreach ($xmldb_indexes as $xmldb_index) {
///tables do not exist yet, which means indexed can not exist yet
if ($indextext = $this->getCreateIndexSQL($xmldb_table, $xmldb_index)) {
$results = array_merge($results, $indextext);
}
}
}
/// Also, add the indexes needed from keys, based on configuration (each one, one statement)
if ($xmldb_keys = $xmldb_table->getKeys()) {
foreach ($xmldb_keys as $xmldb_key) {
/// If we aren't creating the keys OR if the key is XMLDB_KEY_FOREIGN (not underlying index generated
/// automatically by the RDBMS) create the underlying (created by us) index (if doesn't exists)
if (!$this->getKeySQL($xmldb_table, $xmldb_key) || $xmldb_key->getType() == XMLDB_KEY_FOREIGN) {
/// Create the interim index
$index = new xmldb_index('anyname');
$index->setFields($xmldb_key->getFields());
///tables do not exist yet, which means indexed can not exist yet
$createindex = false;
//By default
switch ($xmldb_key->getType()) {
case XMLDB_KEY_UNIQUE:
case XMLDB_KEY_FOREIGN_UNIQUE:
$index->setUnique(true);
$createindex = true;
break;
case XMLDB_KEY_FOREIGN:
$index->setUnique(false);
$createindex = true;
break;
}
if ($createindex) {
//.........这里部分代码省略.........