本文整理汇总了PHP中Cake\Database\Schema\Table::index方法的典型用法代码示例。如果您正苦于以下问题:PHP Table::index方法的具体用法?PHP Table::index怎么用?PHP Table::index使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cake\Database\Schema\Table
的用法示例。
在下文中一共展示了Table::index方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: 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]);
}
}
示例2: indexSql
/**
* {@inheritDoc}
*/
public function indexSql(Table $table, $name)
{
$data = $table->index($name);
$columns = array_map([$this->_driver, 'quoteIdentifier'], $data['columns']);
return sprintf('CREATE INDEX %s ON %s (%s)', $this->_driver->quoteIdentifier($name), $this->_driver->quoteIdentifier($table->name()), implode(', ', $columns));
}
示例3: _generateSchema
/**
* Generates a string representation of a schema.
*
* @param \Cake\Database\Schema\Table $table Table schema
* @return string fields definitions
*/
protected function _generateSchema(Table $table)
{
$cols = $indexes = $constraints = [];
foreach ($table->columns() as $field) {
$fieldData = $table->column($field);
$properties = implode(', ', $this->_values($fieldData));
$cols[] = " '{$field}' => [{$properties}],";
}
foreach ($table->indexes() as $index) {
$fieldData = $table->index($index);
$properties = implode(', ', $this->_values($fieldData));
$indexes[] = " '{$index}' => [{$properties}],";
}
foreach ($table->constraints() as $index) {
$fieldData = $table->constraint($index);
$properties = implode(', ', $this->_values($fieldData));
$constraints[] = " '{$index}' => [{$properties}],";
}
$options = $this->_values($table->options());
$content = implode("\n", $cols) . "\n";
if (!empty($indexes)) {
$content .= " '_indexes' => [\n" . implode("\n", $indexes) . "\n ],\n";
}
if (!empty($constraints)) {
$content .= " '_constraints' => [\n" . implode("\n", $constraints) . "\n ],\n";
}
if (!empty($options)) {
foreach ($options as &$option) {
$option = ' ' . $option;
}
$content .= " '_options' => [\n" . implode(",\n", $options) . "\n ],\n";
}
return "[\n{$content} ]";
}
示例4: indexSql
/**
* {@inheritDoc}
*/
public function indexSql(Table $table, $name)
{
$data = $table->index($name);
if ($data['type'] === Table::INDEX_INDEX) {
$out = 'KEY ';
}
if ($data['type'] === Table::INDEX_FULLTEXT) {
$out = 'FULLTEXT KEY ';
}
$out .= $this->_driver->quoteIdentifier($name);
return $this->_keySql($out, $data);
}