Example #1
0
 /**
  * Find the last morph function in the previous migration files
  *
  * @param VersionItem $version
  * @param string $tableName
  * @return null|\Phalcon\Mvc\Model\Migration
  *
  * @throws Exception
  */
 private static function createPrevClassWithMorphMethod(VersionItem $version, $tableName)
 {
     $prevVersions = array();
     $iterator = new \DirectoryIterator(self::$_migrationPath);
     foreach ($iterator as $fileinfo) {
         if ($fileinfo->isDir() && preg_match('/[a-z0-9](\\.[a-z0-9]+)+/', $fileinfo->getFilename(), $matches)) {
             $prevVersion = new VersionItem($matches[0], 3);
             if ($prevVersion->getStamp() <= $version->getStamp()) {
                 $prevVersions[] = $prevVersion;
             }
         }
     }
     $prevVersions = VersionItem::sortDesc($prevVersions);
     foreach ($prevVersions as $prevVersion) {
         $migration = self::createClass($prevVersion, $tableName);
         if (!is_null($migration) && method_exists($migration, 'morph')) {
             return $migration;
         }
     }
     return null;
 }
 /**
  * Find the last morph function in the previous migration files
  *
  * @param VersionItem $toVersion
  * @param string $tableName
  * @return null|\Phalcon\Mvc\Model\Migration
  *
  * @throws Exception
  */
 private static function createPrevClassWithMorphMethod(VersionItem $toVersion, $tableName)
 {
     $prevVersions = array();
     $versions = self::scanForVersions(self::$_migrationPath);
     foreach ($versions as $prevVersion) {
         if ($prevVersion->getStamp() <= $toVersion->getStamp()) {
             $prevVersions[] = $prevVersion;
         }
     }
     $prevVersions = VersionItem::sortDesc($prevVersions);
     foreach ($prevVersions as $prevVersion) {
         $migration = self::createClass($prevVersion, $tableName);
         if (is_object($migration) && method_exists($migration, 'morph')) {
             return $migration;
         }
     }
     return null;
 }