zhares
(Soyoh1)
October 18, 2011, 7:56am
1
Buenas!
A ver si alguien sabe si se podría hacer, lo que quiero es exportar mi actual base de datos al sistema de migraciones de Yii.
que antes no estaba y ahora se hace un poco complejo mantenerlas mas ahora que se añade gente al proyecto.
saben si Yii incorpora una instruccion para hacerlo?? o alguna herramienta??
Saludos
robregonm
(Ricobregon)
October 19, 2011, 8:22pm
2
Actualmente Yii no dispone de ningún método para hacer ingeniería inversa (bueno CDbCommand algo hace ), pero sería interesante desarrollar un componente con ese propósito, no es mala idea
Saludos y éxitos,
Ricardo
zhares
(Soyoh1)
October 20, 2011, 11:11am
3
Si es lo que me pensaba es algo bastante complejo para hacer automatizado.
a ver, intentaré hacer una función casera para intentar exportar
gracias! un saludo
robregonm
(Ricobregon)
October 20, 2011, 8:40pm
4
Tengo entendido que Doctrine tiene algo para hacerlo, no estoy seguro, pero sería buena idea echarle un vistazo…
Por otro lado también está entre los posibles planes para Yii 2.0, así que probablemente estaremos disfrutando de esa opción en una próxima versión… pero todavía nada confirmado
Saludos.
zhares
(Soyoh1)
October 27, 2011, 1:32pm
5
Buenas!
estaba poniendome a hacer esto, y he encontrado algo en la docu, un comentario de un compañero de Yii.
aqui está: http://www.yiiframework.com/doc/guide/1.1/en/database.migration#c2550
lo he modificado un poco:
(tiene <br> por que lo printo por pantalla y luego lo copio a una migración que hice a mano y organizo un poco mejor el codigo)
class DumpSchemaCommand extends CConsoleCommand
{
public function run() {
$schema = $args[0];
$tables = Yii::app()->db->schema->getTables();
$result = '';
foreach ($tables as $def) {
$result .= '$table_info = Yii::app()->db->schema->getTable("'.$def->name.'");<br />';
$result .= 'if(!table_info){ <br>';
$result .= ' $this->createTable("' . $def->name . '", array(' . "\n";
foreach ($def->columns as $col) {
$result .= ' "' . $col->name . '"=>"' . self::getColType($col) . '",' . "\n";
}
$result .= '), "");' . "<br>}<br><br>\n\n";
}
echo $result;
}
public function getColType($col) {
if ($col->isPrimaryKey) {
return "pk";
}
$result = $col->dbType;
if (!$col->allowNull) {
$result .= ' NOT NULL';
}
if ($col->defaultValue != null) {
$result .= " DEFAULT '{$col->defaultValue}'";
}
return $result;
}
}
Saludos!
Buenas!
A ver si alguien sabe si se podría hacer, lo que quiero es exportar mi actual base de datos al sistema de migraciones de Yii.
que antes no estaba y ahora se hace un poco complejo mantenerlas mas ahora que se añade gente al proyecto.
saben si Yii incorpora una instruccion para hacerlo?? o alguna herramienta??
Saludos
No se podría lograr con Mysql Workbench?
Slds.
JP