2020-11-16 18:58:05

Modelos de Datos Regenerativos

Por @jalexiscv, Hace 2 semanas.

En nuestra estructura HMVC, un modelo es un componente que nos permite trabajar con la capa de los datos, el modelo simplemente es una clase y al igual que ocurre con otros frameworks todos los modelos se extienden de una clase principal denominada Model, para el modelo tenemos que definir varios atributos necesarios, para garantizar una interación estandarizada. Recuerde que la función primaria de un modelo es conectar un modelo con una tabla en la base de datos, y permitir el dialogo de la aplicación con esta estructura de datos especifica. Por tal motivo tenemos que indicar los campos insertables es decir, aquellos campos que nosotros vamos a emplear para administrar dicha estructura de datos vinculada a la tabla; en otras palabras nombre de la tabla, los campos que la conforman, las claves primarias entre otros elementos. En este articulo no se hablara de la creación generica de un modelo si desea conocer estos aspectos le sugiero visitar el articulo titulado Modelo de Datos, por el contrario en este escrito nos enfocaremos en como hacer que el modelo en si mismo sea capaz de regenerar la tabla con la que interactua si esta no existe.

Para regenerar es decir recrear la tabla con la cual se encuentra asociado el modelo si esta no existe es necesario crear una función al interior del modelo e invocar a la misma en el constructor del modelo para que este la ejecute automáticamente y de esta forma la tabla se auto regenere solo en caso de que no exista.

Es de recordar que el constructor debe poder declarar nuevas propiedades en una clase que esta heredando de otra y seguir mostrando las que ya existen en el método __construct() de la clase principal (Model), por lo cual debemos valernos de parent::construct() para invocar de la clase padre de la cual estamos heredando, por tal motivo el constructor de un modelo auto regeneranté debe ser del siguiente modo:

La función regenerate se vale de la clase forge para recrear la estructura de la tabla, pero a su vez la forge se vale del grupo activo para que la tabla se cree en la base de datos indicada $this->DBGroup , o se producirá un error porque forme no sabrá donde crear la tabla especificada, los métodos base del forge a utilizar son $forge->addField para adicionar los campos, $forge->addPrimaryKey , para definir la llave primaria, $forge->addKey para los demás índices y $forge->createTable para crear la tabla una vez se hallan definido los campos y los índices, sin olvidar que el segundo parámetro del createTable debe fijarse en TRUE para que la tabla se cree solo si esta no existe, y no se genere un error en caso de que la tabal exista.

Ejemplo de tipos de campos

  • 'ENUM': El tipo de dato enum en mysql representa una enumeración. Puede tener un máximo de 65535 valores distintos y es una cadena cuyo valor se elige de una lista enumerada de valores permitidos que se especifica al definir el campo y puede ser una cadena vacía e incluso null. Ejemplo: status'=>['type'=>'ENUM','constraint'=>['publish','pending','draft'],'default'=>'pending']
  • 'INT-INTEGER': Ocupación de 4 bytes con valores entre -2147483648 y 2147483647 o entre 0 y 4294967295. Ejemplo: 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true ],
  • 'TEXT': MySQL tiene 4 tipos de campos de texto (TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXT). Los campos de texto de tipo “TEXT” son afectados por la codifiacción de texto. Aquí están las longitudes máximas que permiten almacenar (Más información). Ejemplo: 'description' => [ 'type' => 'TEXT', 'null' => true, ],

Fuente: Jose Alexis Correa Valencia

Notas y referencias

Copyright © 2018 - 2038 Todos los derechos reservados, se prohíbe su reproducción total o parcial, así como su traducción a cualquier idioma sin la autorización escrita de su titular.Términos y condiciones | Políticas de privacidad | Publicidad | Cookies | Más |

XL
LG
MD
SM
XS