/** * @param \Classes\MakerFile $makerFile * @param \Classes\Db\DbTable $dbTable * * @return array */ public function parseRelation(\Classes\MakerFile $makerFile, \Classes\Db\DbTable $dbTable) { $referenceMap = ''; $references = array(); $dependentTables = ''; $dependents = array(); foreach ($dbTable->getForeingkeys() as $objColumn) { $constrant = $objColumn->getFks(); $variable = $constrant->getNameConstrant() . ZendFrameworkOne::SEPARETOR . $objColumn->getName(); $arrClass = array($makerFile->getConfig()->createClassNamespace($constrant), 'DbTable', AbstractMaker::getClassName($constrant->getTable())); $class = implode(ZendFrameworkOne::SEPARETOR, array_filter($arrClass)); $references[] = sprintf("\n '%s' => array (\n 'columns' => '%s' ,\n 'refTableClass' => '%s',\n 'refColumns' =>'%s'\n )", AbstractMaker::getClassName($variable), $objColumn->getName(), $class, $constrant->getColumn()); } if (sizeof($references) > 0) { $referenceMap = "protected \$_referenceMap = array(" . join(',', $references) . "\n );"; } foreach ($dbTable->getDependences() as $objColumn) { foreach ($objColumn->getDependences() as $dependence) { $arrClass = array($makerFile->getConfig()->createClassNamespace($dependence), 'DbTable', AbstractMaker::getClassName($dependence->getTable())); $class = implode(ZendFrameworkOne::SEPARETOR, array_filter($arrClass)); $dependents[] = $class; } } if (sizeof($dependents) > 0) { $dependentTables = "protected \$_dependentTables = array(\n '" . join("',\n '", $dependents) . "'\n );"; } return array('referenceMap' => $referenceMap, 'dependentTables' => $dependentTables); }
/** * @param \Classes\MakerFile $makerFile * @param \Classes\Db\DbTable $dbTable * * @return array */ private function listDependence(\Classes\MakerFile $makerFile, \Classes\Db\DbTable $dbTable) { $mapDependence = ''; $references = array(); foreach ($dbTable->getDependences() as $objColumn) { foreach ($objColumn->getDependences() as $dependence) { $references[] = sprintf('$this->hasMany(\'%s\', \'%s\', \'%s\', array(\'alias\' => \'%s\'))', $objColumn->getName(), $makerFile->getConfig()->createClassNamespace($dependence) . Phalcon::SEPARETOR . AbstractMaker::getClassName($dependence->getTable()), $dependence->getColumn(), AbstractMaker::getClassName($dependence->getTable())); } } if (sizeof($references) > 0) { $mapDependence = join(";\n\t\t", $references) . ";"; } return $mapDependence; }
/** * @param \Classes\Db\DbTable|\Classes\Db\Constrant $table * * @return mixed */ public function createClassNamespace($table) { $arrNames = $this->getBaseNamespace(); if (isset($this->arrConfig['folder-database']) && $this->arrConfig['folder-database']) { $arrNames[] = AbstractMaker::getClassName($this->arrConfig['driver']); } if (isset($this->arrConfig['folder-name']) && $this->arrConfig['folder-name']) { $arrNames[] = AbstractMaker::getClassName($this->arrConfig['folder-name']); } if ($table->hasSchema()) { $arrNames[] = $this->replaceReservedWord(AbstractMaker::getClassName($table->getSchema())); } else { $arrNames[] = $this->replaceReservedWord(AbstractMaker::getClassName($table->getDatabase())); } return implode(static::SEPARETOR, array_filter($arrNames)); }
/** * @param \Classes\MakerFile $makerFile * @param \Classes\Db\DbTable $dbTable * * @return array */ private function listDependence(\Classes\MakerFile $makerFile, \Classes\Db\DbTable $dbTable) { $depends = array(); foreach ($dbTable->getDependences() as $objColumn) { foreach ($objColumn->getDependences() as $dependence) { $name = 'Depend' . ZendFrameworkOne::SEPARETOR . AbstractMaker::getClassName($dependence->getTable()) . ZendFrameworkOne::SEPARETOR . 'By' . ZendFrameworkOne::SEPARETOR . $objColumn->getName(); if (!key_exists($name, $this->validFunc)) { $variable = $dependence->getNameConstrant() . ZendFrameworkOne::SEPARETOR . $objColumn->getName(); $arrClass = array($makerFile->getConfig()->createClassNamespace($dependence), AbstractMaker::getClassName($dependence->getTable())); $class = implode(ZendFrameworkOne::SEPARETOR, array_filter($arrClass)); $this->validFunc[$name] = true; $depends[] = array('class' => $class, 'function' => AbstractMaker::getClassName($name), 'table' => $dependence->getTable(), 'column' => $dependence->getColumn(), 'name' => $dependence->getNameConstrant(), 'variable' => $variable); } unset($name); } } return $depends; }
/** * @param $nameTable * @param int $schema * * @return \Classes\Db\DbTable */ public function createTable($nameTable, $schema = 0) { if (!isset($this->objDbTables[$schema])) { $this->objDbTables[$schema] = new DbTables(); } $this->objDbTables[$schema][trim($nameTable)] = DbTable::getInstance()->populate(array('table' => $nameTable, 'schema' => $schema, 'database' => $this->database)); return $this; }