public function writeVendor(WriterInterface $writer) { $writer->write('<vendor type="mysql">'); $writer->indent(); $writer->write('<parameter name="Engine" value="%s" />', $this->parameters->get('tableEngine')); $writer->write('<parameter name="Charset" value="%s" />', $this->parameters->get('defaultCharacterSetName')); $writer->outdent(); $writer->write('</vendor>'); return $this; }
public function writeRelations(WriterInterface $writer) { $parentTable = $this->getParent()->getParent(); foreach ($this->foreigns as $foreign) { //if($foreign->getParent()->getParent()->getRawTableName() == $parentTable->getRawTableName()){ $writer->write('<foreign-key name="%s" foreignTable="%s" phpName="%s" refPhpName="%s" onDelete="%s" onUpdate="%s">', $foreign->parameters->get('name'), $foreign->getOwningTable()->getRawTableName(), $foreign->getOwningTable()->getModelName(), $foreign->getReferencedTable()->getModelName(), strtolower($foreign->parameters->get('deleteRule')) == 'no action' ? 'none' : strtolower($foreign->parameters->get('deleteRule')), strtolower($foreign->parameters->get('updateRule')) == 'no action' ? 'none' : strtolower($foreign->parameters->get('updateRule'))); $writer->indent(); $writer->write('<reference local="%s" foreign="%s" />', $foreign->getLocal()->getColumnName(), $foreign->getForeign()->getColumnName()); $writer->outdent(); $writer->write('</foreign-key>'); //} } return $this; }
public function writeRelations(WriterInterface $writer) { foreach ($this->foreignKeys as $foreign) { $writer->write('<foreign-key name="%s" foreignTable="%s" phpName="%s" refPhpName="%s" onDelete="%s" onUpdate="%s">', $foreign->parameters->get('name'), $foreign->getReferencedTable()->getRawTableName(), $foreign->getReferencedTable()->getModelName(), $foreign->getOwningTable()->getModelName(), strtolower($foreign->parameters->get('deleteRule')) == 'no action' ? 'none' : strtolower($foreign->parameters->get('deleteRule')), strtolower($foreign->parameters->get('updateRule')) == 'no action' ? 'none' : strtolower($foreign->parameters->get('updateRule'))); $writer->indent(); $locals = $foreign->getLocals(); $foreigns = $foreign->getForeigns(); for ($i = 0; $i < count($locals); $i++) { $writer->write('<reference local="%s" foreign="%s" />', $locals[$i]->getColumnName(), $foreigns[$i]->getColumnName()); } $writer->outdent(); $writer->write('</foreign-key>'); } return $this; }
public function write(WriterInterface $writer) { if ($this->isUnique()) { $type = "unique"; } else { if ($this->isIndex()) { $type = "index"; } else { return $this; } } $writer->write('<%s name="%s">', $type, $this->getName())->indent(); foreach ($this->columns as $refColumn) { $writer->write('<%s-column name="%s" />', $type, $refColumn->getColumnName()); } $writer->outdent()->write('</%s>', $type); return $this; }
public function writeReferences(WriterInterface $writer) { $writer->writeCallback(function (WriterInterface $writer, Table $_this = null) { if (count($_this->getColumns())) { // Get current column from this table foreach ($_this->getColumns() as $column) { // Get tables from the same schema foreach ($this->getParent() as $table) { // If not a pivot table if (!$table->isManyToMany()) { // Get foreignKeys from table foreach ($table->getForeignKeys() as $foreignKey) { // If current column is referenced by foreignKey if ($_this->getRawTableName() == $foreignKey->getReferencedTable()->getRawTableName() && $column->getColumnName() == $foreignKey->getForeign()->getColumnName()) { // Comment $writer->write('/**'); $writer->write(' * Relationship with ' . $foreignKey->getOwningTable()->getModelName() . '.'); $writer->write(' */'); // Start Method $writer->write('public function ' . Inflector::pluralize($foreignKey->getOwningTable()->getRawTableName()) . '()'); $writer->write('{'); $writer->indent(); // One to Many if ($foreignKey->isManyToOne()) { $writer->write('return $this->hasMany(\'' . $_this->getNamespace() . '\\' . $foreignKey->getOwningTable()->getModelName() . '\');'); } else { $writer->write('return $this->hasOne(\'' . $_this->getNamespace() . '\\' . $foreignKey->getOwningTable()->getModelName() . '\');'); } // End Method $writer->outdent(); $writer->write('}'); $writer->write(''); } } } else { if (count($table->getForeignKeys()) == 2) { // ForeignKey 1 $foreignKey1 = $table->getForeignKeys()[0]; // ForeignKey 2 $foreignKey2 = $table->getForeignKeys()[1]; // If current column is referenced by foreignKey if (($_this->getRawTableName() == $foreignKey1->getReferencedTable()->getRawTableName() || $_this->getRawTableName() == $foreignKey2->getReferencedTable()->getRawTableName()) && ($column->getColumnName() == $foreignKey1->getForeign()->getColumnName() || $column->getColumnName() == $foreignKey2->getForeign()->getColumnName())) { // Comment $writer->write('/**'); if ($_this->getRawTableName() != $foreignKey1->getReferencedTable()->getRawTableName()) { $writer->write(' * Relationship with ' . $foreignKey1->getReferencedTable()->getModelName() . '.'); } else { $writer->write(' * Relationship with ' . $foreignKey2->getReferencedTable()->getModelName() . '.'); } $writer->write(' */'); // Method if ($_this->getRawTableName() != $foreignKey1->getReferencedTable()->getRawTableName()) { $writer->write('public function ' . Inflector::pluralize($foreignKey1->getReferencedTable()->getRawTableName()) . '()'); } else { $writer->write('public function ' . Inflector::pluralize($foreignKey2->getReferencedTable()->getRawTableName()) . '()'); } $writer->write('{'); $writer->indent(); // Find out what foreignKey is this reference table and what the other table if ($_this->getRawTableName() != $foreignKey1->getReferencedTable()->getRawTableName()) { $writer->write('return $this->belongsToMany(\'' . $_this->getNamespace() . '\\' . $foreignKey1->getReferencedTable()->getModelName() . '\', \'' . $foreignKey1->getOwningTable()->getRawTableName() . '\', \'' . $foreignKey2->getForeign()->getColumnName() . '\', \'' . $foreignKey1->getForeign()->getColumnName() . '\');'); } else { $writer->write('return $this->belongsToMany(\'' . $_this->getNamespace() . '\\' . $foreignKey2->getReferencedTable()->getModelName() . '\', \'' . $foreignKey2->getOwningTable()->getRawTableName() . '\', \'' . $foreignKey1->getForeign()->getColumnName() . '\', \'' . $foreignKey2->getForeign()->getColumnName() . '\');'); } $writer->outdent(); $writer->write('}'); $writer->write(''); } } } } } } }); return $this; }