Added new fields type and added many improvenments to fields creation
This commit is contained in:
parent
8c8df9eb9b
commit
ee83acf576
7 changed files with 113 additions and 17 deletions
21
bin/padmin
21
bin/padmin
|
|
@ -64,6 +64,23 @@ function padminConsole($options)
|
|||
|
||||
|
||||
WebModel::load_model($options['model']);
|
||||
|
||||
//Load classes not defined in Webmodel::$model
|
||||
|
||||
$arr_classes=get_declared_classes();
|
||||
|
||||
foreach($arr_classes as $class)
|
||||
{
|
||||
|
||||
if(get_parent_class($class)==='PhangoApp\PhaModels\Webmodel')
|
||||
{
|
||||
|
||||
Webmodel::$model[strtolower($class)]=new $class();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
|
||||
|
|
@ -290,7 +307,7 @@ function update_table()
|
|||
|
||||
$id_table_related=Webmodel::load_id_model_related(Webmodel::$model[$key]->components[$field], Webmodel::$model);
|
||||
|
||||
Webmodel::$arr_sql_set_index[$key][$field]='ALTER TABLE `'.$key.'` ADD CONSTRAINT `'.$field.'_'.$key.'IDX` FOREIGN KEY ( `'.$field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE RESTRICT ON UPDATE RESTRICT;';
|
||||
Webmodel::$arr_sql_set_index[$key][$field]='ALTER TABLE `'.$key.'` ADD CONSTRAINT `'.$field.'_'.$key.'IDX` FOREIGN KEY ( `'.$field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE CASCADE ON UPDATE CASCADE;';
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -364,7 +381,7 @@ function update_table()
|
|||
|
||||
$id_table_related=Webmodel::load_id_model_related(Webmodel::$model[$key]->components[$new_field], Webmodel::$model);
|
||||
|
||||
Webmodel::$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;';
|
||||
Webmodel::$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 CASCADE ON UPDATE CASCADE;';
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,22 @@ namespace PhangoApp\PhaModels\CoreFields;
|
|||
|
||||
/**
|
||||
*
|
||||
* Class for create json strings with values
|
||||
*
|
||||
*/
|
||||
|
||||
class ArrayField extends SerializeField {
|
||||
|
||||
public $key_value='';
|
||||
|
||||
public function __construct($related_type, $key_value='')
|
||||
{
|
||||
|
||||
parent::__construct($related_type);
|
||||
|
||||
$this->key_value=$key_value;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is used for show the value on a human format
|
||||
|
|
@ -15,7 +28,7 @@ class ArrayField extends SerializeField {
|
|||
public function show_formatted($value, $key_value='')
|
||||
{
|
||||
|
||||
$real_value=unserialize($value);
|
||||
$real_value=json_decode($value, true);
|
||||
|
||||
if($key_value==='')
|
||||
{
|
||||
|
|
@ -24,10 +37,10 @@ class ArrayField extends SerializeField {
|
|||
|
||||
}
|
||||
else
|
||||
if(isset($real_value[$key_value]))
|
||||
if(isset($real_value[$this->key_value]))
|
||||
{
|
||||
|
||||
return $real_value[$key_value];
|
||||
return $real_value[$this->key_value];
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -35,4 +48,4 @@ class ArrayField extends SerializeField {
|
|||
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
23
src/CoreFields/BigIntegerField.php
Normal file
23
src/CoreFields/BigIntegerField.php
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* BigIntegerfield is a field for big integers values.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace PhangoApp\PhaModels\CoreFields;
|
||||
use PhangoApp\PhaUtils\Utils;
|
||||
use PhangoApp\PhaI18n\I18n;
|
||||
|
||||
class BigIntegerField extends IntegerField {
|
||||
|
||||
function get_type_sql()
|
||||
{
|
||||
|
||||
return 'BIGINT('.$this->size.') NOT NULL DEFAULT "0"';
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -25,7 +25,7 @@ class ForeignKeyField extends IntegerField{
|
|||
public $fields_related_model;
|
||||
public $name_field_to_field;
|
||||
|
||||
function __construct($related_model, $size=11, $default_id=0, $name_field='', $name_value='')
|
||||
function __construct($related_model, $size=11, $default_id=0, $name_field='', $select_fields=[])
|
||||
{
|
||||
|
||||
$this->size=$size;
|
||||
|
|
@ -33,14 +33,14 @@ class ForeignKeyField extends IntegerField{
|
|||
$this->related_model=$related_model;
|
||||
$this->container_model=$this->related_model->name;
|
||||
//Fields obtained from related_model if you make a query...
|
||||
$this->fields_related_model=array();
|
||||
$this->fields_related_model=$select_fields;
|
||||
//Representative field for related model...
|
||||
$this->name_field_to_field=$name_field;
|
||||
$this->default_id=$default_id;
|
||||
$this->quot_open='';
|
||||
$this->quot_close='';
|
||||
$this->protected=0;
|
||||
$this->parameters=array($this->related_model, $name_field, $name_value);
|
||||
$this->parameters=array($this->related_model, $name_field);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,15 +12,28 @@ class ParentField extends IntegerField{
|
|||
//field related in the model...
|
||||
public $parent_model='';
|
||||
|
||||
function __construct($size=11, $parent_model, $name_field='', $name_value='')
|
||||
function __construct($size=11, $name_field='', $name_value='')
|
||||
{
|
||||
|
||||
$this->parent_model=$parent_model;
|
||||
//You need define directly if you dont declare an instance class in a model
|
||||
//$this->parent_model=$parent_model;
|
||||
|
||||
$this->size=$size;
|
||||
$this->form='PhangoApp\PhaModels\Forms\SelectModelForm';
|
||||
$this->parameters=array($this->parent_model, $name_field, $name_value);
|
||||
$this->name_field=$name_field;
|
||||
$this->name_value=$name_value;
|
||||
|
||||
|
||||
}
|
||||
|
||||
function after_register()
|
||||
{
|
||||
|
||||
$this->parent_model=$this->model_instance;
|
||||
$this->form='PhangoApp\PhaModels\Forms\SelectModelForm';
|
||||
$this->parameters=array($this->parent_model, $this->name_field, $this->name_value);
|
||||
|
||||
}
|
||||
|
||||
|
||||
function check($value)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -154,6 +154,19 @@ class PhangoField {
|
|||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Method used for make things after of register in the model
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
function after_register()
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -219,4 +232,4 @@ class PhangoField {
|
|||
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -430,11 +430,18 @@ class Webmodel {
|
|||
*
|
||||
*/
|
||||
|
||||
public function __construct($name_model, $cache=0, $type_cache='PhangoApp\PhaModels\Cache::file_cache')
|
||||
public function __construct($name_model='', $cache=0, $type_cache='PhangoApp\PhaModels\Cache::file_cache')
|
||||
{
|
||||
|
||||
//Webmodel::$root_model='app/'.$name_model.'/'.Webmodel::$model_path;
|
||||
|
||||
if($name_model=='')
|
||||
{
|
||||
|
||||
$name_model=strtolower(get_class($this));
|
||||
|
||||
}
|
||||
|
||||
$this->name=$name_model;
|
||||
$this->idmodel='Id'.ucfirst($this->name);
|
||||
$this->components[$this->idmodel]=new PrimaryField();
|
||||
|
|
@ -457,13 +464,22 @@ class Webmodel {
|
|||
Webmodel::$model[$name_model]=&$this;
|
||||
|
||||
Webmodel::$m->$name_model=&Webmodel::$model[$name_model];
|
||||
|
||||
$this->load_components();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Method for load fields from a method called load_components
|
||||
*
|
||||
*/
|
||||
|
||||
public function load_components()
|
||||
{
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for load models from a project.
|
||||
|
|
@ -1670,7 +1686,7 @@ class Webmodel {
|
|||
|
||||
//'Id'.ucfirst($this->components[$field]->related_model);
|
||||
|
||||
Webmodel::$arr_sql_set_index[$this->name][$field]='ALTER TABLE `'.$this->name.'` ADD CONSTRAINT `'.$field.'_'.$this->name.'IDX` FOREIGN KEY ( `'.$field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE RESTRICT ON UPDATE RESTRICT;';
|
||||
Webmodel::$arr_sql_set_index[$this->name][$field]='ALTER TABLE `'.$this->name.'` ADD CONSTRAINT `'.$field.'_'.$this->name.'IDX` FOREIGN KEY ( `'.$field.'` ) REFERENCES `'.$table_related.'` (`'.$id_table_related.'`) ON DELETE CASCADE ON UPDATE CASCADE;';
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -2258,6 +2274,7 @@ class Webmodel {
|
|||
$this->components[$name]->required=$required;
|
||||
|
||||
$this->components[$name]->set_relationships();
|
||||
$this->components[$name]->after_register();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue