diff --git a/src/Creator.php b/src/Creator.php index 5d53247..c7c9030 100644 --- a/src/Creator.php +++ b/src/Creator.php @@ -21,8 +21,9 @@ class Creator { public function interact() { $name = $this->readline('New model name: '); - $table = $this->readline('Table name: '); - $entity = $this->readline('Entity name: '); + $table = strtolower($name); + $table = $this->readline('Table name ['.$table.']: ', $table); + $entity = $this->readline('Entity name ['.$table.']: ', $table); $namespace = $this->readline('Namespace [App\Models]: ', 'App\Models'); if (strlen($entity) <= 0) { $entity = $table; diff --git a/src/DBmodel.php b/src/DBmodel.php index 0faa2b6..e0f7bc8 100644 --- a/src/DBmodel.php +++ b/src/DBmodel.php @@ -154,6 +154,11 @@ class DBmodel return $where; } + public function getDBtype() + { + return $this->dbh->getAttribute(\PDO::ATTR_DRIVER_NAME); + } + public function existTable($table_id) { $query = sprintf( @@ -269,11 +274,14 @@ class DBmodel return false; } if (count($primary_key_names) > 1) return true; + $last_id = $this->getLastInsertID(); + /* if (method_exists($this->dbh, 'getLastInsertID')) { $last_id = $this->getLastInsertID(); } else { $last_id = $this->getOne('SELECT last_insert_id()'); } + */ return $last_id; } @@ -304,12 +312,14 @@ class DBmodel $query = sprintf( 'UPDATE %s' . ' SET %s' - . ' WHERE %s' - . ' LIMIT 1', + . ' WHERE %s', $table, $set, $this->buildWherePrimaryKey($table_id, $primary_key) ); + if ($this->getDBtype() == 'mysql') { + $query .= ' LIMIT 1'; + } $this->_debug('[DBmodel][record][UPDATE]: ' . $query); $ret = $this->query($query); if ($ret === false) { @@ -331,11 +341,13 @@ class DBmodel } $query = sprintf( 'DELETE FROM %s' - . ' WHERE %s' - . ' LIMIT 1', + . ' WHERE %s', $table, $this->buildWherePrimaryKey($table_id, $primary_key) ); + if ($this->getDBtype() == 'mysql') { + $query .= ' LIMIT 1'; + } $this->_debug('[DBmodel][record][DELETE]: ' . $query); $ret = $this->query($query); if ($ret === false) { @@ -548,6 +560,15 @@ class DBmodel } public function getTableColumns($table_name) { + $db_type = $this->getDBtype(); + switch ($db_type) { + case 'mysql': return $this->getTableColumnsMYSQL($table_name); + case 'sqlite': return $this->getTableColumnsSQLITE($table_name); + default: new \Exception('Unknown DB type: ' . $db_type); + } + } + + public function getTableColumnsMYSQL($table_name) { $desc = $this->getAll(sprintf('DESC %s', $table_name)); $desc = $this->arrayKeysToLowerCase($desc); $pks = array(); @@ -567,6 +588,26 @@ class DBmodel return array('pks' => $pks, 'columns' => $columns, 'types' => $types); } + public function getTableColumnsSQLITE($table_name) { + $desc = $this->getAll(sprintf('PRAGMA table_info(%s)', $table_name)); + $desc = $this->arrayKeysToLowerCase($desc); + $pks = array(); + $columns = array(); + foreach ($desc as $d) { + $colname = $d['name']; + $types[$colname] = $d['type']; + if ($d['pk'] == 1) { + $pks[] = $colname; + if (strtoupper($d['type']) != 'INTEGER') { + $columns[] = $colname; + } + } else { + $columns[] = $colname; + } + } + return array('pks' => $pks, 'columns' => $columns, 'types' => $types); + } + /* ---------------------------------------------------- * HELPER METHODS */