DboSource::alterTable PHP Method

alterTable() public method

テーブル構造を変更する
public alterTable ( array $options ) : boolean
$options array [ new / old ]
return boolean
    public function alterTable($options)
    {
        $options = array_merge(array('dropField' => true), $options);
        extract($options);
        if (!isset($old) || !isset($new)) {
            return false;
        }
        $Schema = ClassRegistry::init('CakeSchema');
        $Schema->connection = $this->configKeyName;
        $compare = $Schema->compare($old, $new);
        if (!$dropField) {
            foreach ($compare as $table => $alter) {
                foreach ($alter as $method => $field) {
                    if ($method == 'drop') {
                        unset($compare[$table]['drop']);
                        break;
                    }
                }
            }
        }
        $sql = $this->alterSchema($compare);
        if ($sql) {
            $return = $this->execute($sql);
            // とりあえずキャッシュを全て削除
            clearCache(null, 'models');
            return $return;
        } else {
            return false;
        }
    }
DboSource