Yoast\WP\Lib\Migrations
Adapter::add_index() public Yoast 1.0
Adds an index.
{} Это метод класса: Adapter{}
Хуков нет.
Возвращает
true/false
. Null. Ничего.
Использование
$Adapter = new Adapter(); $Adapter->add_index( $table_name, $column_name, $options );
- $table_name(строка) (обязательный)
- The table name.
- $column_name(строка) (обязательный)
- The column name.
- $options(массив)
- Index options.
Код Adapter::add_index() Adapter::add index Yoast 16.1.1
public function add_index( $table_name, $column_name, $options = [] ) {
if ( empty( $table_name ) || empty( $column_name ) ) {
return false;
}
// Unique index?
if ( \is_array( $options ) && \array_key_exists( 'unique', $options ) && $options['unique'] === true ) {
$unique = true;
}
else {
$unique = false;
}
// Did the user specify an index name?
if ( \is_array( $options ) && \array_key_exists( 'name', $options ) ) {
$index_name = $options['name'];
}
else {
$index_name = $this->get_index_name( $table_name, $column_name );
}
if ( \strlen( $index_name ) > Constants::MYSQL_MAX_IDENTIFIER_LENGTH ) {
return false;
}
if ( ! \is_array( $column_name ) ) {
$column_names = [ $column_name ];
}
else {
$column_names = $column_name;
}
$cols = [];
foreach ( $column_names as $name ) {
$cols[] = $this->identifier( $name );
}
$sql = \sprintf(
'CREATE %sINDEX %s ON %s(%s)',
( $unique === true ) ? 'UNIQUE ' : '',
$this->identifier( $index_name ),
$this->identifier( $table_name ),
\join( ', ', $cols )
);
return $this->execute_ddl( $sql );
}