Pimcore\Model\Object\ClassDefinition\Service::updateTableDefinitions PHP Méthode

updateTableDefinitions() public static méthode

public static updateTableDefinitions ( &$tableDefinitions, $tableNames )
$tableDefinitions
$tableNames
    public static function updateTableDefinitions(&$tableDefinitions, $tableNames)
    {
        if (!is_array($tableDefinitions)) {
            $tableDefinitions = [];
        }
        $db = \Pimcore\Db::get();
        $tmp = [];
        foreach ($tableNames as $tableName) {
            $tmp[$tableName] = $db->fetchAll("show columns from " . $tableName);
        }
        foreach ($tmp as $tableName => $columns) {
            foreach ($columns as $column) {
                $column["Type"] = strtolower($column["Type"]);
                if (strtolower($column["Null"]) == "yes") {
                    $column["Null"] = "null";
                }
                //                $fieldName = strtolower($column["Field"]);
                $fieldName = $column["Field"];
                $tableDefinitions[$tableName][$fieldName] = $column;
            }
        }
    }

Usage Example

Exemple #1
0
 /**
  * @param Object\ClassDefinition $class
  */
 public function createUpdateTable(Object\ClassDefinition $class)
 {
     $table = $this->getTableName($class);
     $this->db->query("CREATE TABLE IF NOT EXISTS `" . $table . "` (\n\t\t  `o_id` int(11) NOT NULL default '0',\n\t\t  `index` int(11) default '0',\n          `fieldname` varchar(255) default NULL,\n          PRIMARY KEY (`o_id`,`index`,`fieldname`(255)),\n          INDEX `o_id` (`o_id`),\n          INDEX `index` (`index`),\n          INDEX `fieldname` (`fieldname`)\n\t\t) DEFAULT CHARSET=utf8;");
     $existingColumns = $this->getValidTableColumns($table, false);
     // no caching of table definition
     $columnsToRemove = $existingColumns;
     $protectedColums = array("o_id", "index", "fieldname");
     Object\ClassDefinition\Service::updateTableDefinitions($this->tableDefinitions, array($table));
     foreach ($this->model->getFieldDefinitions() as $value) {
         $key = $value->getName();
         if (is_array($value->getColumnType())) {
             // if a datafield requires more than one field
             foreach ($value->getColumnType() as $fkey => $fvalue) {
                 $this->addModifyColumn($table, $key . "__" . $fkey, $fvalue, "", "NULL");
                 $protectedColums[] = $key . "__" . $fkey;
             }
         } else {
             if ($value->getColumnType()) {
                 $this->addModifyColumn($table, $key, $value->getColumnType(), "", "NULL");
                 $protectedColums[] = $key;
             }
         }
         $this->addIndexToField($value, $table);
     }
     $this->removeUnusedColumns($table, $columnsToRemove, $protectedColums);
     $this->tableDefinitions = null;
 }
All Usage Examples Of Pimcore\Model\Object\ClassDefinition\Service::updateTableDefinitions