16 $this->config=
$config[
"database"];
26 foreach ($this->tables as $table){
30 foreach ($fieldsInfos as $field=>$info){
31 $member=
new Member($field);
32 if(in_array($field, $keys)){
33 $member->setPrimary();
35 $member->setDbType($info);
36 $class->addMember($member);
38 $this->classes[$table]=$class;
41 if(isset($singleTable)){
44 foreach ($this->classes as $table=>$class){
45 $name=$class->getSimpleName();
46 echo
"Creating the {$name} class\n";
47 $this->
writeFile($modelsDir.DS.$name.
".php", $class);
50 if($initCache===
true){
57 if(isset($this->classes[$singleTable])){
58 $class=$this->classes[$singleTable];
59 echo
"Creating the {$class->getName()} class\n";
60 $this->
writeFile($modelsDir.DS.$singleTable.
".php", $class);
62 echo
"The {$singleTable} table does not exist in the database\n";
67 foreach ($this->classes as $table=>$class){
69 foreach ($keys as $key){
70 $fks=$this->getForeignKeys($table, $key);
71 foreach ($fks as $fk){
72 $field=strtolower($table);
73 $fkTable=$fk[
"TABLE_NAME"];
74 $this->classes[$table]->addOneToMany($fkTable.
"s",$table, $this->classes[$fkTable]->getName());
75 $this->classes[$fkTable]->addManyToOne($field, $fk[
"COLUMN_NAME"], $class->getName());
83 foreach ($this->classes as $table=>$class){
84 if($class->getName()===$classname)
87 $posSlash=strrpos($classname,
'\\');
88 $tablename=substr($classname, $posSlash+ 1);
89 return lcfirst($tablename);
93 foreach ($this->classes as $table=>$class){
94 if($class->isAssociation()===
true){
95 $members=$class->getManyToOneMembers();
96 if(
sizeof($members)==2){
97 $manyToOne1=$members[0]->getManyToOne();
98 $manyToOne2=$members[1]->getManyToOne();
101 $class1=$this->classes[$table1];
102 $class2=$this->classes[$table2];
103 $tableMember=\lcfirst($table).
"s";
104 $table1Member=\lcfirst($table1).
"s";
105 $table2Member=\lcfirst($table2).
"s";
108 $class1->addManyToMany($table2Member, $manyToOne2->className, $table1Member, $table,$joinTable1,$joinTable2);
109 $class1->removeMember($tableMember);
111 $class2->addManyToMany($table1Member, $manyToOne1->className, $table2Member, $table,$joinTable2,$joinTable1);
112 $class2->removeMember($tableMember);
113 unset($this->classes[$table]);
123 $fk=$joinColumn->name;
126 if($pk!==null && $fk!==null)
127 return [
"name"=>$fk,
"referencedColumnName"=>$pk->getName()];
139 return file_put_contents($filename,$data);
createOneClass($singleTable, $modelsDir)
static getModelsCompletePath()
getPrimaryKeys($tableName)
getJoinTableArray(Model $class, JoinColumnAnnotation $joinColumn)
create($config, $initCache=true, $singleTable=null)
static checkCache(&$config, $silent=false)
getFieldsInfos($tableName)
static initCache(&$config, $type="all", $silent=false)
writeFile($filename, $data)