|
1 | 1 | <?php
|
2 |
| - |
3 | 2 | namespace Ubiquity\orm\reverse;
|
4 | 3 |
|
5 | 4 | use Ubiquity\orm\OrmUtils;
|
|
8 | 7 | /**
|
9 | 8 | * Ubiquity\orm\reverse$TableReversor
|
10 | 9 | * This class is part of Ubiquity
|
| 10 | + * |
11 | 11 | * @author jcheron <[email protected]>
|
12 | 12 | * @version 1.0.0
|
13 | 13 | * @package ubiquity.dev
|
14 | 14 | *
|
15 | 15 | */
|
16 | 16 | class TableReversor {
|
| 17 | + |
17 | 18 | private $model;
|
18 |
| - private $fkFieldsToAdd=[]; |
19 |
| - private $fkFieldTypesToAdd=[]; |
| 19 | + |
| 20 | + private $fkFieldsToAdd = []; |
| 21 | + |
| 22 | + private $fkFieldTypesToAdd = []; |
| 23 | + |
20 | 24 | private $metas;
|
21 | 25 |
|
22 |
| - public function __construct($model=null){ |
23 |
| - $this->model=$model; |
| 26 | + public function __construct($model = null) { |
| 27 | + $this->model = $model; |
24 | 28 | }
|
25 | 29 |
|
26 |
| - public function initFromClass(){ |
27 |
| - if(isset($this->model)) |
28 |
| - $this->metas=OrmUtils::getModelMetadata($this->model); |
| 30 | + public function initFromClass() { |
| 31 | + if (isset($this->model)) |
| 32 | + $this->metas = OrmUtils::getModelMetadata($this->model); |
29 | 33 | }
|
30 | 34 |
|
31 |
| - public function init($metas){ |
32 |
| - $this->metas=$metas; |
| 35 | + public function init($metas) { |
| 36 | + $this->metas = $metas; |
33 | 37 | }
|
34 | 38 |
|
35 |
| - public function generateSQL(DbGenerator $generator){ |
36 |
| - $table=$this->metas["#tableName"]; |
37 |
| - $primaryKeys=$this->metas["#primaryKeys"]; |
38 |
| - $serializables=$this->getSerializableFields(); |
39 |
| - $nullables=$this->metas["#nullable"]; |
40 |
| - $fieldTypes=$this->metas["#fieldTypes"]; |
41 |
| - $manyToOnes=$this->metas["#manyToOne"]; |
42 |
| - $manyToManys=[]; |
43 |
| - if(isset($this->metas["#manyToMany"])) |
44 |
| - $manyToManys=$this->metas["#manyToMany"]; |
| 39 | + public function generateSQL(DbGenerator $generator) { |
| 40 | + $table = $this->metas["#tableName"]; |
| 41 | + $primaryKeys = $this->metas["#primaryKeys"]; |
| 42 | + $serializables = $this->getSerializableFields(); |
| 43 | + $nullables = $this->metas["#nullable"]; |
| 44 | + $fieldTypes = $this->metas["#fieldTypes"]; |
| 45 | + $manyToOnes = $this->metas["#manyToOne"]; |
| 46 | + $manyToManys = []; |
| 47 | + if (isset($this->metas["#manyToMany"])) |
| 48 | + $manyToManys = $this->metas["#manyToMany"]; |
45 | 49 | $this->scanManyToManys($generator, $manyToManys);
|
46 |
| - $this->generatePks($generator, $primaryKeys, $table, $fieldTypes,$nullables); |
| 50 | + $this->generatePks($generator, $primaryKeys, $table, $fieldTypes, $nullables); |
47 | 51 | $this->generateForeignKeys($generator, $manyToOnes, $table);
|
48 |
| - $serializables=\array_unique(\array_merge($serializables,$this->fkFieldsToAdd)); |
49 |
| - $fieldTypes=\array_merge($fieldTypes,$this->fkFieldTypesToAdd); |
50 |
| - $fieldsAttributes=$this->generateFieldsAttributes($serializables, $fieldTypes, $nullables); |
| 52 | + $serializables = \array_unique(\array_merge($serializables, $this->fkFieldsToAdd)); |
| 53 | + $fieldTypes = \array_merge($fieldTypes, $this->fkFieldTypesToAdd); |
| 54 | + $fieldsAttributes = $this->generateFieldsAttributes($serializables, $fieldTypes, $nullables); |
51 | 55 | $generator->createTable($table, $fieldsAttributes);
|
52 |
| - foreach ($this->fkFieldsToAdd as $fkField){ |
53 |
| - $generator->addKey($table, [$fkField],""); |
| 56 | + foreach ($this->fkFieldsToAdd as $fkField) { |
| 57 | + $generator->addKey($table, [ |
| 58 | + $fkField |
| 59 | + ], ""); |
54 | 60 | }
|
55 | 61 | }
|
56 | 62 |
|
57 | 63 | protected function getSerializableFields() {
|
58 |
| - $notSerializable=$this->metas["#notSerializable"]; |
59 |
| - $fieldNames=$this->metas["#fieldNames"]; |
| 64 | + $notSerializable = $this->metas["#notSerializable"]; |
| 65 | + $fieldNames = $this->metas["#fieldNames"]; |
60 | 66 | return \array_diff($fieldNames, $notSerializable);
|
61 | 67 | }
|
62 | 68 |
|
63 |
| - protected function scanManyToManys(DbGenerator $generator,$manyToManys){ |
64 |
| - foreach ($manyToManys as $member=>$manyToMany){ |
65 |
| - if(isset($this->metas["#joinTable"][$member])){ |
66 |
| - $annotJoinTable=$this->metas["#joinTable"][$member]; |
| 69 | + protected function scanManyToManys(DbGenerator $generator, $manyToManys) { |
| 70 | + foreach ($manyToManys as $member => $manyToMany) { |
| 71 | + if (isset($this->metas["#joinTable"][$member])) { |
| 72 | + $annotJoinTable = $this->metas["#joinTable"][$member]; |
67 | 73 | $generator->addManyToMany($annotJoinTable["name"], $manyToMany["targetEntity"]);
|
68 | 74 | }
|
69 | 75 | }
|
70 | 76 | }
|
71 | 77 |
|
72 |
| - protected function generatePks(DbGenerator $generator,$primaryKeys,$table,$fieldTypes,$nullables){ |
| 78 | + protected function generatePks(DbGenerator $generator, $primaryKeys, $table, $fieldTypes, $nullables) { |
73 | 79 | $generator->addKey($table, $primaryKeys);
|
74 |
| - if(\sizeof($primaryKeys)===1 && $generator->isInt($fieldTypes[$primaryKeys[0]])){ |
75 |
| - $generator->addAutoInc($table, $this->getFieldAttributes($generator, $primaryKeys[0], $nullables, $fieldTypes)); |
| 80 | + if (\sizeof($primaryKeys) === 1 && $generator->isInt($fieldTypes[\current($primaryKeys)])) { |
| 81 | + $generator->addAutoInc($table, $this->getFieldAttributes($generator, \current($primaryKeys), $nullables, $fieldTypes)); |
76 | 82 | }
|
77 | 83 | }
|
78 | 84 |
|
79 |
| - protected function generateFieldsAttributes($serializables,$fieldTypes,$nullables){ |
80 |
| - $fieldsAttributes=[]; |
81 |
| - foreach ($serializables as $field){ |
82 |
| - $fieldsAttributes[]=$this->_generateFieldAttributes($field, $nullables, $fieldTypes); |
| 85 | + protected function generateFieldsAttributes($serializables, $fieldTypes, $nullables) { |
| 86 | + $fieldsAttributes = []; |
| 87 | + foreach ($serializables as $field) { |
| 88 | + $fieldsAttributes[] = $this->_generateFieldAttributes($field, $nullables, $fieldTypes); |
83 | 89 | }
|
84 | 90 | return $fieldsAttributes;
|
85 | 91 | }
|
86 | 92 |
|
87 |
| - public function getFieldAttributes(DbGenerator $generator,$field,$nullables,$fieldTypes){ |
| 93 | + public function getFieldAttributes(DbGenerator $generator, $field, $nullables, $fieldTypes) { |
88 | 94 | return $generator->generateField($this->_generateFieldAttributes($field, $nullables, $fieldTypes));
|
89 | 95 | }
|
90 | 96 |
|
91 |
| - protected function _generateFieldAttributes($field,$nullables,$fieldTypes){ |
92 |
| - $nullable="NOT NULL"; |
93 |
| - if(\array_search($field, $nullables)!==false){ |
94 |
| - $nullable=""; |
| 97 | + protected function _generateFieldAttributes($field, $nullables, $fieldTypes) { |
| 98 | + $nullable = "NOT NULL"; |
| 99 | + if (\array_search($field, $nullables) !== false) { |
| 100 | + $nullable = ""; |
95 | 101 | }
|
96 |
| - return ["name"=>$field,"type"=>$fieldTypes[$field],"extra"=>$nullable]; |
| 102 | + return [ |
| 103 | + "name" => $field, |
| 104 | + "type" => $fieldTypes[$field], |
| 105 | + "extra" => $nullable |
| 106 | + ]; |
97 | 107 | }
|
98 | 108 |
|
99 |
| - protected function generateForeignKey(DbGenerator $generator,$tableName,$member){ |
100 |
| - $fieldAnnot=OrmUtils::getMemberJoinColumns("", $member,$this->metas); |
101 |
| - if($fieldAnnot!==null){ |
102 |
| - $annotationArray=$fieldAnnot[1]; |
103 |
| - $referencesTableName=OrmUtils::getTableName($annotationArray["className"]); |
104 |
| - $referencesFieldName=OrmUtils::getFirstKey($annotationArray["className"]); |
105 |
| - $fkFieldName=$fieldAnnot[0]; |
106 |
| - $this->fkFieldsToAdd[]=$fkFieldName; |
107 |
| - $this->fkFieldTypesToAdd[$fkFieldName]=OrmUtils::getFieldType($annotationArray["className"], $referencesFieldName); |
| 109 | + protected function generateForeignKey(DbGenerator $generator, $tableName, $member) { |
| 110 | + $fieldAnnot = OrmUtils::getMemberJoinColumns("", $member, $this->metas); |
| 111 | + if ($fieldAnnot !== null) { |
| 112 | + $annotationArray = $fieldAnnot[1]; |
| 113 | + $referencesTableName = OrmUtils::getTableName($annotationArray["className"]); |
| 114 | + $referencesFieldName = OrmUtils::getFirstKey($annotationArray["className"]); |
| 115 | + $fkFieldName = $fieldAnnot[0]; |
| 116 | + $this->fkFieldsToAdd[] = $fkFieldName; |
| 117 | + $this->fkFieldTypesToAdd[$fkFieldName] = OrmUtils::getFieldType($annotationArray["className"], $referencesFieldName); |
108 | 118 | $generator->addForeignKey($tableName, $fkFieldName, $referencesTableName, $referencesFieldName);
|
109 | 119 | }
|
110 | 120 | }
|
111 | 121 |
|
112 |
| - protected function generateForeignKeys(DbGenerator $generator,$manyToOnes,$tableName){ |
113 |
| - foreach ($manyToOnes as $member){ |
| 122 | + protected function generateForeignKeys(DbGenerator $generator, $manyToOnes, $tableName) { |
| 123 | + foreach ($manyToOnes as $member) { |
114 | 124 | $this->generateForeignKey($generator, $tableName, $member);
|
115 | 125 | }
|
116 | 126 | }
|
|
0 commit comments