5
5
6
6
use orm \DataBase \fields \DateTime ;
7
7
use orm \DataBase \fields \ForeignKey ;
8
+ use orm \DataBase \fields \Number ;
8
9
use orm \DataBase \fields \PrimaryKey ;
9
10
use orm \DataBase \fields \StringField ;
11
+ use orm \Exceptions \ExceptionsMessages ;
10
12
use orm \Exceptions \MigrationException ;
11
13
12
14
class MysqlQueryGenerator implements QueryGeneratorInterface
@@ -55,7 +57,7 @@ public function selectAll($table)
55
57
56
58
public function createDataBase ($ dbname )
57
59
{
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 " .
59
61
"utf8_general_ci; \nuse ` {$ dbname }`; \n" );
60
62
}
61
63
@@ -69,20 +71,23 @@ public function createTable($table, $fields)
69
71
$ query .= "` {$ key }` {$ field ->type }( {$ field ->size }) not null primary key auto_increment, \n" ;
70
72
} elseif ($ field instanceof ForeignKey) {
71
73
$ 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 );
74
76
$ property = $ reflection ->getProperty ("table_name " );
75
77
$ property ->setAccessible (true );
76
78
$ 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 " .
78
80
"{$ field ->on_delete } on update {$ field ->on_update }; \n" ;
79
81
$ property ->setAccessible (false );
80
82
} elseif ($ field instanceof StringField) {
81
83
$ query .= "` {$ key }` {$ field ->type }( {$ field ->size }) not null, \n" ;
82
84
} elseif ($ field instanceof DateTime) {
83
85
$ 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" ;
84
89
} else {
85
- throw new MigrationException (" Migration Exception " );
90
+ throw new MigrationException (ExceptionsMessages:: unsupportedTypeOfField ( gettype ( $ field )) );
86
91
}
87
92
}
88
93
return $ this ->pdo ->prepare (substr ($ query , 0 , -2 ) . "\n) engine=InnoDB default charset=utf8; \n" .
0 commit comments