$referenceNode = $foreignKeyChilds->item($k); break; } } if (!$referenceNode) { continue; } $onDelete = $tableChild->getAttribute('onDelete') == 'setnull' ? 'null' : $tableChild->getAttribute('onDelete'); $alias = sfInflector::camelize(substr($referenceNode->getAttribute('local'), 0, -3)); // local = "id", so $alias = "". We need set $alias to $foreignClass if ($alias == "") { $alias = $foreignClass; } $doctrineSchema[$class]['relations'][$alias] = array('class' => $foreignClass, 'foreign' => $referenceNode->getAttribute('foreign'), 'foreignAlias' => $class . 's', 'alias' => $alias, 'local' => $referenceNode->getAttribute('local'), 'onDelete' => $onDelete); } elseif ($nodeName == "unique") { $indexName = $tableChild->getAttribute('name'); $foreignKeyChilds = $tableChild->childNodes; $fields = array(); for ($k = 0; $k < $foreignKeyChilds->length; $k++) { if ($foreignKeyChilds->item($k)->nodeType == XML_ELEMENT_NODE && $foreignKeyChilds->item($k)->nodeName == "unique-column") { $fields[] = $foreignKeyChilds->item($k)->getAttribute('name'); } } $doctrineSchema[$class]['indexes'][$indexName] = array('fields' => $fields, 'type' => 'unique'); } } } // Dump data. Dont use sfYaml::dump (syck_dump has problem) $yamlDumper = new Doctrine_Parser_Spyc(); file_put_contents($doctrineSchemaFile, $yamlDumper->dump($doctrineSchema, 2, 0));
/** * dumpData * * Dump an array of data to a specified path or return * * @param string $array Array of data to dump to yaml * @param string $path Path to dump the yaml to * @return string $yaml * @return void */ public function dumpData($array, $path = null) { $spyc = new Doctrine_Parser_Spyc(); $data = $spyc->dump($array, false, false); return $this->doDump($data, $path); }