当前位置: 首页>>代码示例>>PHP>>正文


PHP xmldb_table::validateDefinition方法代码示例

本文整理汇总了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) {
//.........这里部分代码省略.........
开发者ID:nmicha,项目名称:moodle,代码行数:101,代码来源:sql_generator.php


注:本文中的xmldb_table::validateDefinition方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。