コード例 #1
0
ファイル: MySQLAdapter.php プロジェクト: triple-i/tarako
 /**
  * インデックスに関わるSQLを構築する
  *
  * @param  Index $index
  * @return string
  */
 private function _buildIndexSql(Index $index)
 {
     $sql = '';
     if ($index->getType() == self::INDEX_UNIQUE) {
         $sql .= ' UNIQUE';
     } elseif ($index->getType() == self::INDEX_FULLTEXT) {
         $sql .= ' FULLTEXT';
     }
     $sql .= ' KEY';
     if (is_string($index->getName())) {
         $sql .= sprintf(' `%s`', $index->getName());
     }
     // インデックスを付与するカラムを指定する
     $columns = $index->getColumns();
     foreach ($columns as $key => $column) {
         $limit = is_null($index->getLimit()) ? '' : sprintf('(%s)', $index->getLimit());
         $columns[$key] = sprintf('`%s`%s', $column, $limit);
     }
     $sql .= sprintf(' (%s)', implode(',', $columns));
     return $sql;
 }
コード例 #2
0
ファイル: Table.php プロジェクト: triple-i/tarako
 /**
  * カラムにインデックスを付与する
  * 
  * @param  string|array| $columns
  * @param  array $options
  * @return Table
  */
 public function addIndex($columns, $options = [])
 {
     if (!is_array($columns)) {
         $columns = [$columns];
     }
     if (isset($options['complex']) && $options['complex'] === true) {
         $index = new Index();
         $index->setColumns($columns);
         $index->setOptions($options);
         $this->indexes[] = $index;
     } else {
         foreach ($columns as $column) {
             $index = new Index();
             $index->setColumns([$column]);
             $index->setOptions($options);
             $this->indexes[] = $index;
         }
     }
     return $this;
 }