/** * Fonction de creation d'une nouvelle table dans la base de donnée. * * @param string $table * @param callable $cb * @param bool $displaySql */ public static function create($table, callable $cb, $displaySql = false) { static::$table = $table; $fields = new Fields($table); call_user_func_array($cb, [$fields]); $sql = (new StatementMaker($fields))->toCreateTableStatement(); if ($sql == null) { die("[0;31mPlease check your 'up' method.[00m\n"); } if ($displaySql) { echo $sql . "\n"; } static::$data = $fields->getBindData(); if (Database::statement($sql)) { echo "[0;32m{$table} table created.[00m\n"; } }
/** * Ajout les indexes et la clé primaire. * * @param \StdClass $info * @param string $field */ private function addIndexOrPrimaryKey($info, $field) { if ($info["primary"]) { $this->sql .= " PRIMARY KEY"; $info["primary"] = false; } else { if ($info["unique"]) { $this->sql .= " UNIQUE"; $info["unique"] = false; } else { if (isset($info["indexes"])) { $this->sql .= ", INDEXE `" . $this->columns->getTableName() . "_indexe_" . $field . "` (`" . $field . "`)"; $info["indexes"] = false; } } } }