18 $this->config=
$config[
"database"];
28 foreach ($this->tables as $table){
32 foreach ($fieldsInfos as $field=>$info){
33 $member=
new Member($field);
34 if(in_array($field, $keys)){
35 $member->setPrimary();
37 $member->setDbType($info);
38 $class->addMember($member);
40 $this->classes[$table]=$class;
43 if(isset($singleTable)){
46 foreach ($this->classes as $table=>$class){
47 $name=$class->getSimpleName();
48 echo
"Creating the {$name} class\n";
49 $this->
writeFile($modelsDir.DS.$name.
".php", $class);
52 if($initCache===
true){
59 if(isset($this->classes[$singleTable])){
60 $class=$this->classes[$singleTable];
61 echo
"Creating the {$class->getName()} class\n";
62 $this->
writeFile($modelsDir.DS.$singleTable.
".php", $class);
64 echo
"The {$singleTable} table does not exist in the database\n";
69 foreach ($this->classes as $table=>$class){
71 foreach ($keys as $key){
72 $fks=$this->getForeignKeys($table, $key);
73 foreach ($fks as $fk){
74 $field=strtolower($table);
75 $fkTable=$fk[
"TABLE_NAME"];
76 $this->classes[$table]->addOneToMany($fkTable.
"s",$table, $this->classes[$fkTable]->getName());
77 $this->classes[$fkTable]->addManyToOne($field, $fk[
"COLUMN_NAME"], $class->getName());
85 foreach ($this->classes as $table=>$class){
86 if($class->getName()===$classname)
89 $posSlash=strrpos($classname,
'\\');
90 $tablename=substr($classname, $posSlash+ 1);
91 return lcfirst($tablename);
95 foreach ($this->classes as $table=>$class){
96 if($class->isAssociation()===
true){
97 $members=$class->getManyToOneMembers();
98 if(
sizeof($members)==2){
99 $manyToOne1=$members[0]->getManyToOne();
100 $manyToOne2=$members[1]->getManyToOne();
103 $class1=$this->classes[$table1];
104 $class2=$this->classes[$table2];
105 $tableMember=\lcfirst($table).
"s";
106 $table1Member=\lcfirst($table1).
"s";
107 $table2Member=\lcfirst($table2).
"s";
110 $class1->addManyToMany($table2Member, $manyToOne2->className, $table1Member, $table,$joinTable1,$joinTable2);
111 $class1->removeMember($tableMember);
113 $class2->addManyToMany($table1Member, $manyToOne1->className, $table2Member, $table,$joinTable2,$joinTable1);
114 $class2->removeMember($tableMember);
115 unset($this->classes[$table]);
125 $fk=$joinColumn->name;
128 if($pk!==null && $fk!==null && $pk!==null)
129 return [
"name"=>$fk,
"referencedColumnName"=>$pk];
141 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)