Esempio n. 1
0
    /**
     * @param  Migration $migration
     * @return fluent
     */
    public function down(Migration $migration)
    {
        $version = $migration->getVersion();
        $sql = <<<SQL
SELECT *
FROM migrations.migrations
WHERE version = :version
ORDER BY version
SQL;
        $version_row = $this->yo_pdo->query($sql, ['version' => $version])->fetch();
        if (!$version_row) {
            throw new Exception("Migration '{$version}' cannot be rolled back because it is not currently applied.");
        }
        $migration_reflection = new ReflectionClass(get_class($migration));
        $this->yo_pdo->insert('migrations.rollbacks', ['version' => $version_row['version'], 'migrated_at' => $version_row['migrated_at'], 'migration_hash' => $version_row['migration_hash'], 'rollback_hash' => hash_file('sha256', $migration_reflection->getFileName())]);
        $this->yo_pdo->delete('migrations.migrations', 'version = :version', ['version' => $migration->getVersion()]);
        return $this;
    }