SowerPHP

Framework PHP hecho en Chile

Herramientas de usuario

Herramientas del sitio


mvc:model:database:orm

Mapeo objeto-relacional o ORM

Para el trabajo con una base de datos se recomienda mapear las tablas de la base de datos a clases en el código PHP. De esta forma un objeto instanciado de la clase X representará una fila de la tabla X en la base de datos.

Los modelos que trabajan con base de datos tendrán a su disposición el atributo db, este representa el objeto con la conexión a la base de datos. De esta forma si queremos hacer una consulta directa a la base de datos podemos hacerla así:

$this->db->query('DELETE FROM usuario');

Lo anterior es sólo un ejemplo de los métodos disponibles, existen más.

Para explicar como se realiza el mapeo se utilizará como ejemplo la tabla usuario, con esto se explicarán los archivos involucrados en el mapeo, que función cumple cada uno y como están relacionados.

Clases Usuario y Usuarios

Para el trabajo con los datos de la base de datos se dispondrán dos clases que se instanciarán según lo que se desee realizar. Estas clases implementarán funcionalidades extras, aquellas que no se puedan obtener directamente del diseño de la tabla. Si se está utilizando generación automática, lo recomendado, esta clase tiene mucho sentido, ya que esta clase estará vacía y será utilizada para escribir los métodos que no se pueden determinar directamente de la tabla, o bien para sobreescribir métodos que no sean adecuados para la tabla.

  • Model_Usuario: permitirá trabajar con una fila de la tabla, representará un registro.
$Usuario = new Model_Usuario();

Se define en archivo Model/Usuario.php y contiene:

class Model_Usuario extends \Model_App
{
}
  • Model_Usuarios: permitirá trabajar con varias filas de la tabla, representará varios registros.
$Usuarios = new Model_Usuarios();

Se define en archivo Model/Usuarios.php y contiene:

class Model_Usuarios extends \Model_Plural_App
{
}

Clases base

La clase Model_Usuario extenderá Model_App que a su vez extiende la clase Model, disponible en lib/sowerphp/core/Model.php Esta clase contiene los métodos básicos para trabajar con un registro de la tabla, ejemplo:

  • Constructor: define nombre de la base de datos y tabla. Si se pasa la PK del registro lo seleccionará si existe en la base de datos.
  • set(): permite asignar los valores de los atributos mediante un arreglo (en realidad este método es heredado desde la clase Object).
  • save(): guarda un registro (actualizando o insertando según corresponda).
  • exists(): determina si el registro existe.
  • Métodos para FKs: estos métodos tendrán el nombre getTabla donde Tabla es el nombre de la tabla de la FK, con este método se podrá recuperar un objeto que represente al registro relacionando mediante la FK.

La clase Model_Usuarios extenderá Model_Plural_App que a su vez extiende la clase Model_Plural, disponible en Model/Plural.php de la extensión app. Esta clase contiene los métodos básicos para trabajar con varios registros de la tabla, ejemplo:

  • Constructor: define nombre de la base de datos y tabla.
  • getList(): obtiene una tabla con las columnas id y glosa.
mvc/model/database/orm.txt · Última modificación: 2016/04/14 21:11 por delaf