/** * stringify * * @return string */ private function makeSqlStatement() { /** * Les informations entrées par l'utilisateur. */ $fields = $this->columns->getDefineFields(); $fields->each(function (Collection $value, $type) { switch ($type) { case 'char': case 'tinytext': case 'varchar': case 'text': case 'mediumtext': case 'longtext': case "int": case "tinyint": case "smallint": case "mediumint": case "longint": case "bigint": case "float": case "double precision": case "tinyblob": case "blob": case "mediumblob": case "longblob": $value->each(function ($info, $field) use($type) { $this->addFieldType($info, $field, $type); if (in_array($type, ["int", "longint", "bigint", "mediumint", "smallint", "tinyint"], true)) { if ($this->columns->getAutoincrement() !== false) { if ($this->columns->getAutoincrement()->method == $type && $this->columns->getAutoincrement()->field == $field) { $this->sql .= " AUTO_INCREMENT"; } $this->columns->setAutoincrement(false); } } if ($info["default"]) { $this->sql .= " DEFAULT " . $info["default"]; } $this->addIndexOrPrimaryKey($info, $field); }); break; case "date": case "datetime": case "timestamp": case "time": case "year": $value->each(function ($info, $field) use($type) { $this->addFieldType($info, $field, $type); $this->addIndexOrPrimaryKey($info, $field); }); break; case "enum": $value->each(function ($info, $field) { foreach ($info["value"] as $key => $value) { $info["value"][$key] = "'" . $value . "'"; } $null = $this->getNullType($info["null"]); $enum = implode(", ", $info["value"]); $this->sql .= "`{$field}` ENUM({$enum}) {$null}"; if ($info["default"] !== null) { $this->sql .= " DEFAULT '" . $info["default"] . "'"; } }); break; } }); return $this->sql; }