public function export(Atomik_Model_Builder $builder) { $definition = new Atomik_Db_Definition($builder->getManager()->getDbInstance()); $definition->dropBeforeCreate(); $tableName = $builder->tableName; $table = $definition->table($tableName); foreach ($builder->getFields() as $field) { list($type, $length) = $field->getSqlType(); $column = $table->createColumn($field->name, $type, $length, $field->getOptions('sql-')); if ($builder->getPrimaryKeyField() == $field) { $table->primaryKey($field->name); $column->options['auto-increment'] = true; } if ($builder->isFieldPartOfReference($field)) { $table->index($field->name, $field->getOption('sql-index', null)); } } $builder->getBehaviourBroker()->notifyBeforeExport($builder, $definition); $sql = $definition->toSql(); $builder->getBehaviourBroker()->notifyAfterExport($builder, $sql); return $sql; }
public function beforeExport(Atomik_Model_Builder $builder, Atomik_Db_Definition $definition) { $tableName = $builder->tableName; $foreignFieldName = $tableName . '_' . $builder->getPrimaryKeyField()->name; $definition->table($this->_suffix($tableName)) ->column($this->_prefix('id'), 'int') ->column($this->_prefix($foreignFieldName), 'int') ->column($this->_prefix('field_name'), 'varchar', 100) ->column($this->_prefix('field_value'), 'text') ->primaryKey('id') ->index($foreignFieldName); }