From e6430cf15e85e5e3b29f4a5c20a20c23e9aa40e4 Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Tue, 28 Apr 2015 04:08:43 +0200 Subject: [PATCH] Fixes for create new foreignkeyfield --- bin/padmin.php | 57 ++++++++++++++++++++++++++++-- src/CoreFields/ForeignKeyField.php | 2 +- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/bin/padmin.php b/bin/padmin.php index 53a602b..1a86e49 100644 --- a/bin/padmin.php +++ b/bin/padmin.php @@ -185,9 +185,9 @@ function update_table($model) $arr_sql_index[$key][$field]='CREATE INDEX `index_'.$key.'_'.$field.'` ON '.$key.'(`'.$field.'`);'; - $table_related=$model[$key]->components[$field]->related_model; + $table_related=$model[$key]->components[$field]->related_model->name; - $id_table_related=load_id_model_related($model[$key]->components[$field]); + $id_table_related=load_id_model_related($model[$key]->components[$field], $model); //'Id'.ucfirst($model[$key]->components[$field]->related_model); @@ -371,7 +371,7 @@ function update_table($model) $table_related=$model[$key]->components[$new_field]->related_model; - $id_table_related=load_id_model_related($model[$key]->components[$new_field]); + $id_table_related=load_id_model_related($model[$key]->components[$new_field], $model); $arr_sql_set_index[$key][$new_field]='ALTER TABLE `'.$key.'` ADD CONSTRAINT `'.$new_field.'_'.$key.'IDX` FOREIGN KEY ( `'.$new_field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE RESTRICT ON UPDATE RESTRICT;'; @@ -465,4 +465,55 @@ function update_table($model) } +function load_id_model_related($foreignkeyfield, $model) +{ + + //global $model; + + $table_related=$foreignkeyfield->related_model->name; + + $id_table_related=''; + + if(!isset($model[ $table_related ]->idmodel)) + { + + //$id_table_related='Id'.ucfirst(PhangoVar::$model[$key]->components[$new_field]->related_model); + //Need load the model + + if(isset($foreignkeyfield->params_loading_mod['module']) && isset($foreignkeyfield->params_loading_mod['model'])) + { + + $model=load_model($foreignkeyfield->params_loading_mod); + + //obtain id + + $id_table_related=$model[ $foreignkeyfield->params_loading_mod['model'] ]->idmodel; + + /*unset(PhangoVar::$model[ $foreignkeyfield->params_loading_mod['model'] ]); + + unset($cache_model);*/ + + } + + } + else + { + + $id_table_related=$model[ $table_related ]->idmodel; + + } + + if($id_table_related=='') + { + + //Set standard... + + $id_table_related='Id'.ucfirst($table_related); + + } + + return $id_table_related; + +} + ?> \ No newline at end of file diff --git a/src/CoreFields/ForeignKeyField.php b/src/CoreFields/ForeignKeyField.php index a1024f0..e534855 100644 --- a/src/CoreFields/ForeignKeyField.php +++ b/src/CoreFields/ForeignKeyField.php @@ -30,7 +30,7 @@ class ForeignKeyField extends IntegerField{ $this->size=$size; $this->form='SelectForm'; $this->related_model=&$related_model; - $this->container_model=$this->related_model->name_model; + $this->container_model=$this->related_model->name; //Fields obtained from related_model if you make a query... $this->fields_related_model=array(); //Representative field for related model...