====== Sample Usage ====== This page shows the usage of the metaObjectStructure in various situations. ------------------------------------ ===== Complex Example ===== The following complex example shows the additional functionality of updating indexes, as well as chaining methods $dict = NewDataDictionary($db); $t = new metaObjectStructure($dict,'test'); $t->addAttribute('ENGINE INNODB','mysql'); $t->addColumnObject('COL1','I'); $t->addColumnObject('COL1','I') ->addAttribute('NOTNULL'); $c = $t->addColumnObject('COL2','C(64)'); $c->addAttribute('NOTNULL'); $i = $t->addIndexObject('CIDX'); $ii = $i->addIndexItemObject('COL1'); $t->addColumnObject('COL1','C(32)') ->addAttribute('NOTNULL') ->addAttribute(array('DEFAULT'=>'abc')); $t->addColumnObject('COL2','I') ->addAttribute('NOTNULL') ->addAttribute('PRIMARY') ->addAttribute('AUTO'); $t->addColumnObject('COL3','N(12.2)'); $t->addColumnObject('COL4','C(64)') ->addAttribute(array('CHARACTER SET'=>'"ascii"')) ->addAttribute(array('COLLATE'=>'"latin1_swedish_ci"'),'mysql'); $t->addColumnObject('COL5',"ENUM('cats','dogs','fish')"); $t->addColumnObject('COL6','T') ->addAttribute('DEFTIMESTAMP'); $t->addColumnObject('COL7','D') ->addAttribute('DEFDATE'); $t->addIndexObject('COL4-INDEX') ->addIndexItem('COL4') ->addAttribute('ASC'); $t->addIndexObject('COL4-INDEX') ->addIndexItem('COL5'); $sql = $dict->createTableSql($tabledef); print_r($sql); Returns: Array ( [0] => CREATE TABLE test ( COL1 C(32) NOT NULL DEFAULT 'abc', COL2 I NOT NULL AUTO-INCREMENT, COL3 N(12.2), COL4 C(64) CHARACTER SET "ascii" COLLATE "latin1_swedish_ci", COL5 ENUM('cats','dogs','fish'), COL6 T DEFAULT NOW(), COL7 D DEFAULT CURDATE(), PRIMARY KEY (COL2) ) ENGINE INNODB [1] => ALTER TABLE test ADD INDEX CIDX (COL1) [2] => ALTER TABLE test ADD INDEX `COL4-INDEX` (`COL4 ASC`, COL5) ) The code above identifies a bug in addIndexSql where the column is incorrectly quoted if an attribute is added ===== Data Dictionary Objects ===== The object can be passed to the following ADOdb methods ==== createIndexSql ==== **Note that multiple indexes can be created in the same command when used this way** === Usage === $t = new metaObjectStructure($dict,'employees'); $t->addIndexObject('bd-idx') ->addIndexItemObject('birth_date')->addAttribute('ASC'); $sqlarray = $dict->createIndexSql($t); ==== dropIndexSql ==== === Usage ==== $t = new metaObjectStructure($dict,'employees'); $t->addIndeObject('bd-idx'); $sqlarray = $dict->dropIndexSql($t); ==== addColumnSql ==== === Usage === $t = new metaObjectStructure($dict,'employees'); $t->addColumnObject('COL','C(32)'); $sqlarray = $dict->addColumnSql($t); ==== alterColumnSql ==== === Usage === $t = new metaObjectStructure($dict,'employees'); $t->addColumnObject('COL','C(32)'); $sqlarray = $dict->alterColumnSql($t); ==== dropColumnSql ==== === Usage === $t = new metaObjectStructure($dict,'employees'); $t->addColumnObject('COL','C(32)'); $sqlarray = $dict->dropColumnSql($t); ==== dropTableSql ==== === Usage === $t = new metaObjectStructure($dict,'employees'); $sqlarray = $dict->dropTableSql($t); ==== renameTableSql ==== === Usage === $t = new metaObjectStructure($dict,'employees'); $t->setNewName('new-column'); $sqlarray = $dict->renameTableSql($t);