Umil.table add

umil::table_add –– Add a database table using the Umil Library.

Description
string umil::table_add ( mixed $table_name [, array $table_data ] )

Return Values
Returns result or umil_end data

Table Data
The table data is an array of information pertaining to how Umil will create the table.

There are 3 sections to it, COLUMNS, PRIMARY_KEY, and KEYS.

Columns
Information for setting up the columns are here. This should be given as an array with the column name being the array key and the value being an array with the data.

In the value array holding the information, the first item is the Database_Type_Map, the second item is the default value, and the third item is optional and to be used for special fields.

For example, setting up an auto increment column: 'user_id'	=> array('UINT', NULL, 'auto_increment')

Or a description field, say for the forum description: 'forum_desc'	=> array('TEXT_UNI', ''),

Primary Key
The primary key is where you would enter what the primary key for the table is.

For example, user_id: 'user_id'

Having the primary key be multiple columns (in this case, role_id and role_option_id): array('role_id', 'auth_option_id')

Keys
The extra keys/indexes for the table

For example, an index named module_enabled for the module_enabled column: 'module_enabled'	=> array('INDEX', 'module_enabled'),

Or an index named left_right_id for the left_id and right_id columns: 'left_right_id'	=> array('INDEX', array('left_id', 'right_id')),

Example #1
The phpbb_icons table. $umil->table_add('phpbb_icons', array( 'COLUMNS'		=> array(		'icons_id'				=> array('UINT', NULL, 'auto_increment'),		'icons_url'				=> array('VCHAR', ''),		'icons_width'			=> array('TINT:4', 0),		'icons_height'			=> array('TINT:4', 0),		'icons_order'			=> array('UINT', 0),		'display_on_posting'	=> array('BOOL', 1),	), 'PRIMARY_KEY'	=> 'icons_id', 'KEYS'			=> array(		'display_on_posting'	=> array('INDEX', 'display_on_posting'),	), ));

Example #2
The posts table $umil->table_add(POSTS_TABLE, array( 'COLUMNS'		=> array(		'post_id'				=> array('UINT', NULL, 'auto_increment'),		'topic_id'				=> array('UINT', 0),		'forum_id'				=> array('UINT', 0),		'poster_id'				=> array('UINT', 0),		'icon_id'				=> array('UINT', 0),		'poster_ip'				=> array('VCHAR:40', ),		'post_time'				=> array('TIMESTAMP', 0),		'post_approved'			=> array('BOOL', 1),		'post_reported'			=> array('BOOL', 0),		'enable_bbcode'			=> array('BOOL', 1),		'enable_smilies'		=> array('BOOL', 1),		'enable_magic_url'		=> array('BOOL', 1),		'enable_sig'			=> array('BOOL', 1),		'post_username'			=> array('VCHAR_UNI:255', ),		'post_subject'			=> array('STEXT_UNI', , 'true_sort'),		'post_text'				=> array('MTEXT_UNI', ),		'post_checksum'			=> array('VCHAR:32', ),		'post_attachment'		=> array('BOOL', 0),		'bbcode_bitfield'		=> array('VCHAR:255', ),		'bbcode_uid'			=> array('VCHAR:8', ''),		'post_postcount'		=> array('BOOL', 1), 'post_edit_time'		=> array('TIMESTAMP', 0), 'post_edit_reason'		=> array('STEXT_UNI', ''), 'post_edit_user'		=> array('UINT', 0), 'post_edit_count'		=> array('USINT', 0), 'post_edit_locked'		=> array('BOOL', 0), ),	'PRIMARY_KEY'	=> 'post_id',	'KEYS'			=> array( 'forum_id'				=> array('INDEX', 'forum_id'), 'topic_id'				=> array('INDEX', 'topic_id'), 'poster_ip'				=> array('INDEX', 'poster_ip'), 'poster_id'				=> array('INDEX', 'poster_id'), 'post_approved'			=> array('INDEX', 'post_approved'), 'tid_post_time'			=> array('INDEX', array('topic_id', 'post_time')), ), ));

Example #3
Adding multiple tables with one function call

$umil->table_add(array( array('phpbb_poll_options', array( 'COLUMNS'		=> array(			'poll_option_id'		=> array('TINT:4', 0),			'topic_id'				=> array('UINT', 0),			'poll_option_text'		=> array('TEXT_UNI', ''),			'poll_option_total'		=> array('UINT', 0),		), 'KEYS'			=> array(			'poll_opt_id'			=> array('INDEX', 'poll_option_id'),			'topic_id'				=> array('INDEX', 'topic_id'),		), )),	array('phpbb_poll_votes', array( 'COLUMNS'		=> array(			'topic_id'				=> array('UINT', 0),			'poll_option_id'		=> array('TINT:4', 0),			'vote_user_id'			=> array('UINT', 0),			'vote_user_ip'			=> array('VCHAR:40', ''),		), 'KEYS'			=> array(			'topic_id'				=> array('INDEX', 'topic_id'),			'vote_user_id'			=> array('INDEX', 'vote_user_id'),			'vote_user_ip'			=> array('INDEX', 'vote_user_ip'),		), )), ));