19 if(isset($this->model))
28 $table=$this->metas[
"#tableName"];
29 $primaryKeys=$this->metas[
"#primaryKeys"];
31 $nullables=$this->metas[
"#nullable"];
32 $fieldTypes=$this->metas[
"#fieldTypes"];
33 $manyToOnes=$this->metas[
"#manyToOne"];
35 if(isset($this->metas[
"#manyToMany"]))
36 $manyToManys=$this->metas[
"#manyToMany"];
38 $this->
generatePks($generator, $primaryKeys, $table, $fieldTypes,$nullables);
40 $serializables=\array_unique(\array_merge($serializables,$this->fkFieldsToAdd));
41 $fieldTypes=\array_merge($fieldTypes,$this->fkFieldTypesToAdd);
44 foreach ($this->fkFieldsToAdd as $fkField){
45 $generator->
addKey($table, [$fkField],
"");
50 $notSerializable=$this->metas[
"#notSerializable"];
51 $fieldNames=$this->metas[
"#fieldNames"];
52 return \array_diff($fieldNames, $notSerializable);
56 foreach ($manyToManys as $member=>$manyToMany){
57 if(isset($this->metas[
"#joinTable"][$member])){
58 $annotJoinTable=$this->metas[
"#joinTable"][$member];
59 $generator->
addManyToMany($annotJoinTable[
"name"], $manyToMany[
"targetEntity"]);
65 $generator->
addKey($table, $primaryKeys);
66 if(\
sizeof($primaryKeys)===1 && $generator->
isInt($fieldTypes[$primaryKeys[0]])){
73 foreach ($serializables as $field){
76 return $fieldsAttributes;
85 if(\array_search($field, $nullables)!==
false){
88 return [
"name"=>$field,
"type"=>$fieldTypes[$field],
"extra"=>$nullable];
93 if($fieldAnnot!==null){
94 $annotationArray=$fieldAnnot[1];
97 $fkFieldName=$fieldAnnot[0];
98 $this->fkFieldsToAdd[]=$fkFieldName;
99 $this->fkFieldTypesToAdd[$fkFieldName]=
OrmUtils::getFieldType($annotationArray[
"className"], $referencesFieldName);
100 $generator->
addForeignKey($tableName, $fkFieldName, $referencesTableName, $referencesFieldName);
105 foreach ($manyToOnes as $member){
static getMemberJoinColumns($instance, $member, $metaDatas=NULL)
generateForeignKey(DbGenerator $generator, $tableName, $member)
generateField($fieldAttributes)
static getFieldType($className, $field)
generateForeignKeys(DbGenerator $generator, $manyToOnes, $tableName)
static getFirstKey($class)
generatePks(DbGenerator $generator, $primaryKeys, $table, $fieldTypes, $nullables)
generateFieldsAttributes($serializables, $fieldTypes, $nullables)
static getModelMetadata($className)
static getTableName($class)
scanManyToManys(DbGenerator $generator, $manyToManys)
addAutoInc($tableName, $fieldName, $value=1)
generateSQL(DbGenerator $generator)
addForeignKey($tableName, $fkFieldName, $referencesTableName, $referencesFieldName, $fkName=null, $onDelete="CASCADE", $onUpdate="NO ACTION")
addKey($tableName, $fieldNames, $type="PRIMARY")
addManyToMany($jointable, $targetEntity)
createTable($name, $fieldsAttributes, $attributes=["ENGINE=InnoDB","DEFAULT CHARSET=utf8"])
getFieldAttributes(DbGenerator $generator, $field, $nullables, $fieldTypes)
_generateFieldAttributes($field, $nullables, $fieldTypes)