columns = is_string($columns) ? [$columns] : $columns; return $this; } /** * Gets the index columns. * * @return string[]|null */ public function getColumns(): ?array { return $this->columns; } /** * Sets the index type. * * @param string $type Type * @return $this */ public function setType(string $type) { $this->type = $type; return $this; } /** * Gets the index type. * * @return string */ public function getType(): string { return $this->type; } /** * Sets the index name. * * @param string $name Name * @return $this */ public function setName(string $name) { $this->name = $name; return $this; } /** * Gets the index name. * * @return string|null */ public function getName(): ?string { return $this->name; } /** * Sets the index limit. * * @param int|array $limit limit value or array of limit value * @return $this */ public function setLimit($limit) { $this->limit = $limit; return $this; } /** * Gets the index limit. * * @return int|array|null */ public function getLimit() { return $this->limit; } /** * Sets the index columns sort order. * * @param string[] $order column name sort order key value pair * @return $this */ public function setOrder(array $order) { $this->order = $order; return $this; } /** * Gets the index columns sort order. * * @return string[]|null */ public function getOrder(): ?array { return $this->order; } /** * Sets the index included columns. * * @param string[] $includedColumns Columns * @return $this */ public function setInclude(array $includedColumns) { $this->includedColumns = $includedColumns; return $this; } /** * Gets the index included columns. * * @return string[]|null */ public function getInclude(): ?array { return $this->includedColumns; } /** * Utility method that maps an array of index options to this objects methods. * * @param array $options Options * @throws \RuntimeException * @return $this */ public function setOptions(array $options) { // Valid Options $validOptions = ['type', 'unique', 'name', 'limit', 'order', 'include']; foreach ($options as $option => $value) { if (!in_array($option, $validOptions, true)) { throw new RuntimeException(sprintf('"%s" is not a valid index option.', $option)); } // handle $options['unique'] if (strcasecmp($option, self::UNIQUE) === 0) { if ((bool)$value) { $this->setType(self::UNIQUE); } continue; } $method = 'set' . ucfirst($option); $this->$method($value); } return $this; } }