55
66use orm \DataBase \fields \DateTime ;
77use orm \DataBase \fields \ForeignKey ;
8+ use orm \DataBase \fields \Number ;
89use orm \DataBase \fields \PrimaryKey ;
910use orm \DataBase \fields \StringField ;
11+ use orm \Exceptions \ExceptionsMessages ;
1012use orm \Exceptions \MigrationException ;
1113
1214class MysqlQueryGenerator implements QueryGeneratorInterface
@@ -55,7 +57,7 @@ public function selectAll($table)
5557
5658 public function createDataBase ($ dbname )
5759 {
58- return $ this ->pdo ->prepare ("create database if not exists ` {$ dbname }` default character set utf8 collate " .
60+ return $ this ->pdo ->prepare ("create database if not exists ` {$ dbname }` default character set utf8 collate " .
5961 "utf8_general_ci; \nuse ` {$ dbname }`; \n" );
6062 }
6163
@@ -69,20 +71,23 @@ public function createTable($table, $fields)
6971 $ query .= "` {$ key }` {$ field ->type }( {$ field ->size }) not null primary key auto_increment, \n" ;
7072 } elseif ($ field instanceof ForeignKey) {
7173 $ query .= "` {$ key }` int not null, \n" ;
72- $ table = new $ field ->table ();
73- $ reflection = new \ReflectionClass ($ table );
74+ $ current_table = new $ field ->table ();
75+ $ reflection = new \ReflectionClass ($ current_table );
7476 $ property = $ reflection ->getProperty ("table_name " );
7577 $ property ->setAccessible (true );
7678 $ foreign_keys .= "alter table ` {$ table }` add constraint ` {$ key }_fk` foreign key (` {$ key }`) " .
77- " references ` {$ property ->getValue ($ table )}` (` {$ field ->field }`) on delete " .
79+ " references ` {$ property ->getValue ($ current_table )}` (` {$ field ->field }`) on delete " .
7880 "{$ field ->on_delete } on update {$ field ->on_update }; \n" ;
7981 $ property ->setAccessible (false );
8082 } elseif ($ field instanceof StringField) {
8183 $ query .= "` {$ key }` {$ field ->type }( {$ field ->size }) not null, \n" ;
8284 } elseif ($ field instanceof DateTime) {
8385 $ query .= "` {$ key }` {$ field ->type } not null, \n" ;
86+ } elseif ($ field instanceof Number) {
87+ $ auto_increment = ($ field ->auto_increment ) ? "auto_increment " : "" ;
88+ $ query .= "` {$ key }` {$ field ->type }( {$ field ->size }) {$ field ->attribute } not null {$ auto_increment }, \n" ;
8489 } else {
85- throw new MigrationException (" Migration Exception " );
90+ throw new MigrationException (ExceptionsMessages:: unsupportedTypeOfField ( gettype ( $ field )) );
8691 }
8792 }
8893 return $ this ->pdo ->prepare (substr ($ query , 0 , -2 ) . "\n) engine=InnoDB default charset=utf8; \n" .
0 commit comments