Beispiel #1
0
 /**
  * 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;
 }