Acceso a la Base de Datos

En esta pagina se describe como acceder a la BD para extraer y guardar información relacionada con un modulo específico.

Modelo->getData([id], [config])

Devuelve un Data con la información del módulo con el ID que viene en la variable id, esta variable es opcional, y su valor por defecto es el campo "id" del arreglo $_POST. Por ejemplo, hagamos una función que muestre la información de un corredor olímpico.

function getCorredorOlimpico($id)
{
   global $modelo, $vista; // el modelo y la vista son declarados en la pagina principal del modulo.

   $vista->setTemplate("editar");
   $data = $modelo->getData($id);

   $vista->createForm($data);

   $vista->parseTemplate();
}

Variaciones de config

Modelo->loadDefault(Data)

Carga en Data, los valores por defecto de un módulo específico. En este ejemplo, haremos la función para crear un nuevo corredor olímpico.

function newCorredorOlimpico()
{
   global $modelo, $vista; // el modelo y la vista son declarados en la pagina principal del modulo.

   $vista->setTemplate("editar"); // se elije el template
   $data = $modelo->getData(); // se obtiene la informacion estructural de la BD
   $data = $modelo->loadDeafault($data); // se cargan los valores por defecto

   $vista->createForm($data); // se genera un formulario para la informacion

   $vista->parseTemplate(); // se envía al browser
}

Modelo->setData(data,[config],[build])

Esta función permite almacenar información de un módulo en la BD. En el siguiente ejemplo se muestra como se guarda la modificación de un corredor olímpico.

function insertCorredorOlimpico()
{
   global $modelo, $vista; // el modelo y la vista son declarados en la pagina principal del modulo.

   $data = $modelo->validate($id); //se verifica que la informacion es correcta.

   if( $modelo->hasErrors($data) ) //si hay errores
   {
      $vista->setTemplate("editar");
      $vista->createForm($data); //se vuelve a mostrar la edicion de un corredor olimpico pero mostrando los errores de la inserción.
      $vista->parseTemplate();
   }
   else
   {
      $modelo->setData($data); // se guarda la informacion
   }

   $vista->redirect("/insercion_correcta.php");
}

SetData() establece automáticamente si se trata de un elemento nuevo o si se esta modificando otro. Si esta definido un ID dentro de data, actualiza el valor de ese ID

Modelo->dropData(nombreCampo,[config])

Existen dos tipos de borrado de BD en Prewer-Helper: Borrado Físico y Borrado Lógico. El primero es borrar la entrada de la base de datos y el segundo es marcar la entrada como borrada. Por convención, Preweb-Helper hace un Borrado Físico, pero si se agrega el campo "deleted" a la tabla en cuestión, se hace Borrado Lógico, marcando como "deleted" = "1" si esta borrado y "0" si no.

NombreCampo especifica por qué campo borrar y por defecto es "id". El valor por el cual se borra es $config["id"].function borrarCorredor()
{
   global $modelo, $vista;

   $modelo->dropData();

   $vista->redirect("/borradoExitosamente.php");
}

Si queremos borrar también las medallas que ganó este corredor debemos hacerlo utilizando cambios en config.

function borrarCorredor()
{
   global $modelo, $vista;

   //primero corredor
   $modelo->dropData();

   //despues medallas
   $conf = array( "prefix" => "mmed_", "module" => "medallas" );
   $modelo->dropData("id_mco_corredor",$conf);

   $vista->redirect("/borradoExitosamente.php");
}

Modelo->dropData(nombreCampo,[config],campoReferencia)

Esta última forma de llamar a dropData(), devuelve el valor del campo campoReferencia, de los registros borrados.

Modelo->getLastId()

Devuelve el ultimo id utilizado por HelperModel, ignorando accesos a tablas de idioma o de relaciones múltiples. Esta función es muy util cuando se inserta un elemento a la BD y se necesita saber su id, para realizar una modificación extra.
Por ejemplo:

function insertCorredorOlimpico()
{
   global $modelo, $vista; // el modelo y la vista son declarados en la pagina principal del modulo.

   $data = $modelo->validate($id); //se verifica que la informacion es correcta.

   if( $modelo->hasErrors($data) ) //si hay errores
   {
      $vista->setTemplate("editar");
      $vista->createForm($data); //se vuelve a mostrar la edicion de un corredor olimpico pero mostrando los errores de la inserción.
      $vista->parseTemplate();
   }
   else
   {
      $modelo->setData($data); // se guarda la informacion
      $id_corredor = $modelo->getLastId();
      $vista->redirect("/insercion_correcta.php?id=" . $id_corredor); //se dirige a una pagina q va a mostrar info del corredor insertado
   }
}

Otras consultas SQL ( variable $db )

Para consultas personalizadas, se utiliza la variable $db, que es una conexión a la BD.

db->query(SQL,Archivo,Linea);

Ejecuta la consulta SQL, Archivo y Linea son una referencia para mostrar un eventual mensaje de error.

db->query_array(SQL,Archivo,Linea);

Ejecuta la consulta SQL y devuelve su resultado en un arreglo, Archivo y Linea son una referencia para mostrar un eventual mensaje de error.