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


PHP Table::addIndex方法代码示例

本文整理汇总了PHP中Cake\Database\Schema\Table::addIndex方法的典型用法代码示例。如果您正苦于以下问题:PHP Table::addIndex方法的具体用法?PHP Table::addIndex怎么用?PHP Table::addIndex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Cake\Database\Schema\Table的用法示例。


在下文中一共展示了Table::addIndex方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: _schemaFromFields

 /**
  * Build the fixtures table schema from the fields property.
  *
  * @return void
  */
 protected function _schemaFromFields()
 {
     $connection = ConnectionManager::get($this->connection());
     $this->_schema = new Table($this->table);
     foreach ($this->fields as $field => $data) {
         if ($field === '_constraints' || $field === '_indexes' || $field === '_options') {
             continue;
         }
         $this->_schema->addColumn($field, $data);
     }
     if (!empty($this->fields['_constraints'])) {
         foreach ($this->fields['_constraints'] as $name => $data) {
             if (!$connection->supportsDynamicConstraints() || $data['type'] !== Table::CONSTRAINT_FOREIGN) {
                 $this->_schema->addConstraint($name, $data);
             } else {
                 $this->_constraints[$name] = $data;
             }
         }
     }
     if (!empty($this->fields['_indexes'])) {
         foreach ($this->fields['_indexes'] as $name => $data) {
             $this->_schema->addIndex($name, $data);
         }
     }
     if (!empty($this->fields['_options'])) {
         $this->_schema->options($this->fields['_options']);
     }
 }
开发者ID:taodf,项目名称:cakephp,代码行数:33,代码来源:TestFixture.php

示例2: _schemaFromFields

 /**
  * Build the fixtures table schema from the fields property.
  *
  * @return void
  */
 protected function _schemaFromFields()
 {
     $this->_schema = new Table($this->table);
     foreach ($this->fields as $field => $data) {
         if ($field === '_constraints' || $field === '_indexes' || $field === '_options') {
             continue;
         }
         // Trigger errors on deprecated usage.
         if (is_array($data) && isset($data['key'])) {
             $msg = 'Usage of the `key` options in columns is not supported. Try using the upgrade shell to migrate your fixtures.';
             $msg .= ' You can download the upgrade shell from https://github.com/cakephp/upgrade.';
             trigger_error($msg, E_USER_NOTICE);
         }
         $this->_schema->addColumn($field, $data);
     }
     if (!empty($this->fields['_constraints'])) {
         foreach ($this->fields['_constraints'] as $name => $data) {
             $this->_schema->addConstraint($name, $data);
         }
     }
     if (!empty($this->fields['_indexes'])) {
         // Trigger errors on deprecated usage.
         if (empty($data['type'])) {
             $msg = 'Indexes must define a type. Try using the upgrade shell to migrate your fixtures.';
             $msg .= ' You can download the upgrade shell from https://github.com/cakephp/upgrade.';
             trigger_error($msg, E_USER_NOTICE);
         }
         foreach ($this->fields['_indexes'] as $name => $data) {
             $this->_schema->addIndex($name, $data);
         }
     }
     if (!empty($this->fields['_options'])) {
         $this->_schema->options($this->fields['_options']);
     }
 }
开发者ID:ripzappa0924,项目名称:carte0.0.1,代码行数:40,代码来源:TestFixture.php

示例3: _schemaFromFields

 /**
  * Build the fixtures table schema from the fields property.
  *
  * @return void
  */
 protected function _schemaFromFields()
 {
     $this->_schema = new Table($this->table);
     foreach ($this->fields as $field => $data) {
         if ($field === '_constraints' || $field === '_indexes' || $field === '_options') {
             continue;
         }
         $this->_schema->addColumn($field, $data);
     }
     if (!empty($this->fields['_constraints'])) {
         foreach ($this->fields['_constraints'] as $name => $data) {
             $this->_schema->addConstraint($name, $data);
         }
     }
     if (!empty($this->fields['_indexes'])) {
         foreach ($this->fields['_indexes'] as $name => $data) {
             $this->_schema->addIndex($name, $data);
         }
     }
     if (!empty($this->fields['_options'])) {
         $this->_schema->options($this->fields['_options']);
     }
 }
开发者ID:malhan23,项目名称:assignment-3,代码行数:28,代码来源:TestFixture.php

示例4: convertIndexDescription

 public function convertIndexDescription(Table $table, $row)
 {
     $type = null;
     $columns = $length = [];
     $name = $row['CONSTRAINT_NAME'];
     switch ($row['CONSTRAINT_TYPE']) {
         case 'P':
             $name = $type = Table::CONSTRAINT_PRIMARY;
             break;
         case 'U':
             $type = Table::CONSTRAINT_UNIQUE;
             break;
         default:
             return;
             //Not doing anything here with Oracle "Check" constraints or "Reference" constraints
     }
     $columns[] = strtolower($row['COLUMN_NAME']);
     $isIndex = $type === Table::INDEX_INDEX || $type === Table::INDEX_FULLTEXT;
     if ($isIndex) {
         $existing = $table->index($name);
     } else {
         $existing = $table->constraint($name);
     }
     if (!empty($existing)) {
         $columns = array_merge($existing['columns'], $columns);
         $length = array_merge($existing['length'], $length);
     }
     if ($isIndex) {
         $table->addIndex($name, ['type' => $type, 'columns' => $columns, 'length' => $length]);
     } else {
         $table->addConstraint($name, ['type' => $type, 'columns' => $columns, 'length' => $length]);
     }
 }
开发者ID:hevertonfreitas,项目名称:cakephp-3-oracle,代码行数:33,代码来源:OracleSchema.php

示例5: convertIndexDescription

 /**
  * {@inheritDoc}
  *
  * Since SQLite does not have a way to get metadata about all indexes at once,
  * additional queries are done here. Sqlite constraint names are not
  * stable, and the names for constraints will not match those used to create
  * the table. This is a limitation in Sqlite's metadata features.
  *
  */
 public function convertIndexDescription(Table $table, $row)
 {
     $sql = sprintf('PRAGMA index_info(%s)', $this->_driver->quoteIdentifier($row['name']));
     $statement = $this->_driver->prepare($sql);
     $statement->execute();
     $columns = [];
     foreach ($statement->fetchAll('assoc') as $column) {
         $columns[] = $column['name'];
     }
     $statement->closeCursor();
     if ($row['unique']) {
         $table->addConstraint($row['name'], ['type' => Table::CONSTRAINT_UNIQUE, 'columns' => $columns]);
     } else {
         $table->addIndex($row['name'], ['type' => Table::INDEX_INDEX, 'columns' => $columns]);
     }
 }
开发者ID:maitrepylos,项目名称:nazeweb,代码行数:25,代码来源:SqliteSchema.php

示例6: convertIndexDescription

 /**
  * {@inheritDoc}
  */
 public function convertIndexDescription(Table $table, $row)
 {
     $type = Table::INDEX_INDEX;
     $name = $row['relname'];
     if ($row['indisprimary']) {
         $name = $type = Table::CONSTRAINT_PRIMARY;
     }
     if ($row['indisunique'] && $type === Table::INDEX_INDEX) {
         $type = Table::CONSTRAINT_UNIQUE;
     }
     preg_match('/\\(([^\\)]+)\\)/', $row['statement'], $matches);
     $columns = $this->_convertColumnList($matches[1]);
     if ($type === Table::CONSTRAINT_PRIMARY || $type === Table::CONSTRAINT_UNIQUE) {
         $table->addConstraint($name, ['type' => $type, 'columns' => $columns]);
         // If there is only one column in the primary key and it is integery,
         // make it autoincrement.
         $columnDef = $table->column($columns[0]);
         if ($type === Table::CONSTRAINT_PRIMARY && count($columns) === 1 && in_array($columnDef['type'], ['integer', 'biginteger'])) {
             $columnDef['autoIncrement'] = true;
             $table->addColumn($columns[0], $columnDef);
         }
         return;
     }
     $table->addIndex($name, ['type' => $type, 'columns' => $columns]);
 }
开发者ID:juanshot,项目名称:cakephp,代码行数:28,代码来源:PostgresSchema.php

示例7: convertIndexDescription

 /**
  * {@inheritDoc}
  */
 public function convertIndexDescription(Table $table, $row)
 {
     $type = null;
     $columns = $length = [];
     $name = $row['Key_name'];
     if ($name === 'PRIMARY') {
         $name = $type = Table::CONSTRAINT_PRIMARY;
     }
     $columns[] = $row['Column_name'];
     if ($row['Index_type'] === 'FULLTEXT') {
         $type = Table::INDEX_FULLTEXT;
     } elseif ($row['Non_unique'] == 0 && $type !== 'primary') {
         $type = Table::CONSTRAINT_UNIQUE;
     } elseif ($type !== 'primary') {
         $type = Table::INDEX_INDEX;
     }
     if (!empty($row['Sub_part'])) {
         $length[$row['Column_name']] = $row['Sub_part'];
     }
     $isIndex = $type === Table::INDEX_INDEX || $type === Table::INDEX_FULLTEXT;
     if ($isIndex) {
         $existing = $table->index($name);
     } else {
         $existing = $table->constraint($name);
     }
     // MySQL multi column indexes come back as multiple rows.
     if (!empty($existing)) {
         $columns = array_merge($existing['columns'], $columns);
         $length = array_merge($existing['length'], $length);
     }
     if ($isIndex) {
         $table->addIndex($name, ['type' => $type, 'columns' => $columns, 'length' => $length]);
     } else {
         $table->addConstraint($name, ['type' => $type, 'columns' => $columns, 'length' => $length]);
     }
 }
开发者ID:ansidev,项目名称:cakephp_blog,代码行数:39,代码来源:MysqlSchema.php

示例8: convertIndexDescription

 /**
  * {@inheritDoc}
  */
 public function convertIndexDescription(Table $table, $row)
 {
     $type = Table::INDEX_INDEX;
     $name = $row['index_name'];
     if ($row['is_primary_key']) {
         $name = $type = Table::CONSTRAINT_PRIMARY;
     }
     if ($row['is_unique_constraint'] && $type === Table::INDEX_INDEX) {
         $type = Table::CONSTRAINT_UNIQUE;
     }
     if ($type === Table::INDEX_INDEX) {
         $existing = $table->index($name);
     } else {
         $existing = $table->constraint($name);
     }
     $columns = [$row['column_name']];
     if (!empty($existing)) {
         $columns = array_merge($existing['columns'], $columns);
     }
     if ($type === Table::CONSTRAINT_PRIMARY || $type === Table::CONSTRAINT_UNIQUE) {
         $table->addConstraint($name, ['type' => $type, 'columns' => $columns]);
         return;
     }
     $table->addIndex($name, ['type' => $type, 'columns' => $columns]);
 }
开发者ID:ripzappa0924,项目名称:carte0.0.1,代码行数:28,代码来源:SqlserverSchema.php

示例9: convertIndexDescription

 /**
  * {@inheritDoc}
  */
 public function convertIndexDescription(Table $table, $row)
 {
     $tableIndex = array_change_key_case($row);
     $type = null;
     $columns = $length = [];
     $keyName = $this->_transformValueCase($tableIndex['name']);
     $name = $this->_transformValueCase($tableIndex['column_name']);
     if (strtolower($tableIndex['is_primary']) == 'p') {
         $keyName = $type = Table::CONSTRAINT_PRIMARY;
     } elseif ($tableIndex['is_unique']) {
         $type = Table::CONSTRAINT_UNIQUE;
     } else {
         $type = Table::INDEX_INDEX;
     }
     $columns[] = $this->_transformValueCase($name);
     $isIndex = $type === Table::INDEX_INDEX;
     if ($isIndex) {
         $existing = $table->index($keyName);
     } else {
         $existing = $table->constraint($keyName);
     }
     if (!empty($existing)) {
         $columns = array_merge($existing['columns'], $columns);
     }
     if ($isIndex) {
         $table->addIndex($keyName, ['type' => $type, 'columns' => $columns]);
     } else {
         $table->addConstraint($keyName, ['type' => $type, 'columns' => $columns]);
     }
 }
开发者ID:cakedc,项目名称:cakephp-oracle-driver,代码行数:33,代码来源:OracleSchema.php

示例10: prepareIndex

 /**
  * Prepare index
  *
  * @param DOMElement $table
  * @param DOMXPath   $xpath
  * @param Table      $schemaTable
  */
 protected function prepareIndex(DOMElement $table, DOMXPath $xpath, Table $schemaTable)
 {
     $indexes = $xpath->query(sprintf('/database/table[@name="%s"]/index', $table->getAttribute('name')));
     /** @var DOMElement $index */
     foreach ($indexes as $index) {
         $indexColumns = $index->getElementsByTagName('index-column');
         $indexName = $index->getAttribute('name');
         $indexType = $index->getAttribute('type');
         $tmpIndexColumns = [];
         /** @var DOMElement $indexColumn */
         foreach ($indexColumns as $indexColumn) {
             $tmpIndexColumns[] = $indexColumn->getAttribute('name');
         }
         if (empty(trim($indexType))) {
             $indexType = 'index';
         }
         if (empty(trim($indexName))) {
             $indexName = sprintf('%s_%s_%s', $table->getAttribute('name'), implode('_', $tmpIndexColumns), $indexType);
         }
         $schemaTable->addIndex($indexName, ['type' => $indexType, 'columns' => $tmpIndexColumns]);
     }
 }
开发者ID:radphp,项目名称:cake-orm-bundle,代码行数:29,代码来源:BuildAction.php

示例11: _prepareSchema

 /**
  * Gets an schema instance for the given fixture class.
  *
  * @param string $fixtureClassName The fixture to be "converted"
  * @return \Cake\Database\Schema\Table Schema instance
  */
 protected function _prepareSchema($fixtureClassName)
 {
     $fixture = new $fixtureClassName();
     if (!empty($fixture->table)) {
         $tableName = $fixture->table;
     } else {
         $tableName = (string) Inflector::underscore(str_replace_last('Fixture', '', $fixtureClassName));
     }
     list($fields, $constraints, $indexes, $options) = $this->_prepareSchemaProperties($fixture);
     $schema = new TableSchema($tableName, $fields);
     foreach ($constraints as $name => $attrs) {
         $schema->addConstraint($name, $attrs);
     }
     foreach ($indexes as $name => $attrs) {
         $schema->addIndex($name, $attrs);
     }
     if (!empty($options)) {
         $schema->options($options);
     }
     return $schema;
 }
开发者ID:quickapps-plugins,项目名称:installer,代码行数:27,代码来源:DatabaseInstaller.php

示例12: testAddIndexTypes

 /**
  * Test adding different kinds of indexes.
  *
  * @return void
  */
 public function testAddIndexTypes()
 {
     $table = new Table('articles');
     $table->addColumn('id', 'integer')->addColumn('title', 'string')->addColumn('author_id', 'integer');
     $table->addIndex('author_idx', ['columns' => ['author_id'], 'type' => 'index'])->addIndex('texty', ['type' => 'fulltext', 'columns' => ['title']]);
     $this->assertEquals(['author_idx', 'texty'], $table->indexes());
 }
开发者ID:neilan35,项目名称:betterwindow1,代码行数:12,代码来源:TableTest.php


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