Prado\Wsat\TWsatARGenerator::buildRelations PHP Метод

buildRelations() публичный Метод

public buildRelations ( )
    public function buildRelations()
    {
        $this->_relations = array();
        foreach ($this->getAllTableNames() as $table_name) {
            $tableInfo = $this->_dbMetaData->getTableInfo($table_name);
            $pks = $tableInfo->getPrimaryKeys();
            $fks = $tableInfo->getForeignKeys();
            if (count($pks) === 2 && count($tableInfo->getColumns()) === 2) {
                $table_name_mm = $fks[0]["table"];
                $table_name_mm2 = $fks[1]["table"];
                $this->_relations[$table_name_mm][] = array("prop_name" => strtolower($table_name_mm2), "rel_type" => "self::MANY_TO_MANY", "ref_class_name" => $this->_getProperClassName($table_name_mm2), "prop_ref" => $table_name);
                $this->_relations[$table_name_mm2][] = array("prop_name" => strtolower($table_name_mm), "rel_type" => "self::MANY_TO_MANY", "ref_class_name" => $this->_getProperClassName($table_name_mm), "prop_ref" => $table_name);
                continue;
            }
            foreach ($fks as $fk_data) {
                $owner_table = $fk_data["table"];
                $slave_table = $table_name;
                $fk_prop = key($fk_data["keys"]);
                $this->_relations[$owner_table][] = array("prop_name" => strtolower($slave_table), "rel_type" => "self::HAS_MANY", "ref_class_name" => $this->_getProperClassName($slave_table), "prop_ref" => $fk_prop);
                $this->_relations[$slave_table][] = array("prop_name" => strtolower($owner_table), "rel_type" => "self::BELONGS_TO", "ref_class_name" => $this->_getProperClassName($owner_table), "prop_ref" => $fk_prop);
            }
        }
    }

Usage Example

Пример #1
0
 public function generate($sender)
 {
     if ($this->IsValid) {
         $tableName = $this->table_name->Text;
         $outputFolderNs = $this->output_folder->Text;
         $classPrefix = $this->class_prefix->Text;
         $classSuffix = $this->class_suffix->Text;
         try {
             $ar_generator = new TWsatARGenerator();
             $ar_generator->setOpFile($outputFolderNs);
             $ar_generator->setClasPrefix($classPrefix);
             $ar_generator->setClassSufix($classSuffix);
             if ($this->build_rel->Checked) {
                 $ar_generator->buildRelations();
             }
             if ($tableName != "*") {
                 $ar_generator->generate($tableName);
             } else {
                 $ar_generator->generateAll();
             }
             $this->feedback_panel->CssClass = "green_panel";
             $this->generation_msg->Text = "The code has been generated successfully.";
         } catch (Exception $ex) {
             $this->feedback_panel->CssClass = "red_panel";
             $this->generation_msg->Text = $ex->getMessage();
         }
         $this->feedback_panel->Visible = true;
     }
 }