07-01-2015, 11:09 PM
Hey guys, so im stuck on trying to edit a column in a table using the dbforge library. What seems to be happening, is its for some reason renaming the table first, before trying to change any of the other attributes... which is really weird to me.
Heres the error..
The code snippet is below..
Any ideas?
Thanks!
Heres the error..
Quote:Unknown column 'FOO' in 'example_table'
ALTER TABLE `example_table` CHANGE `FOO` `BAR` varchar(15) NOT NULL, CHANGE `FOO` `FOO` varchar(20) NULL
The code snippet is below..
PHP Code:
<?php
$a['original_name'] = 'FOO';
$a['column_name'] = 'BAR';
$fields[$a['original_name']] = array();
// Default values for all columns being edited
$fields[$a['original_name']]['name'] = $a['column_name'];
// Dynamic values for edited columns
switch($a['type'])
{
case 'text':
case 'string':
$fields[$a['original_name']]['type'] = 'varchar';
$fields[$a['original_name']]['constraint'] = (@is_numeric($a['max']) ? $a['max'] : '255');
$fields[$a['original_name']]['null'] = ($a['required'] ? FALSE : TRUE);
if($a['default'])
$fields[$a['original_name']]['default'] = $a['default'];
break;
case 'select':
$fields[$a['original_name']]['type'] = "enum('" . implode("','", $a['options']) . "')";
$fields[$a['original_name']]['null'] = ($a['required'] ? FALSE : TRUE);
$fields[$a['original_name']]['default'] = $a['default'];
break;
case 'multiselect':
$fields[$a['original_name']]['type'] = "set('" . implode("','", $a['options']) . "')";
$fields[$a['original_name']]['null'] = ($a['required'] ? FALSE : TRUE);
if($a['default'])
$fields[$a['original_name']]['default'] = implode(',', $a['default']);
break;
case 'boolean':
$fields[$a['original_name']]['type'] = "enum('0','1')";
$fields[$a['original_name']]['null'] = FALSE;
$fields[$a['original_name']]['default'] = ($a['default'] ? '1' : '0');
break;
}
// Change the table or log the error
self::$dbf->modify_column($partition_table, $fields);
Any ideas?
Thanks!