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
- "idName", es el nombre del campo que hace de clave, por defecto es "id".
- "module" especifica el módulo de donde obtener los daros, por defecto es el actual.
- "prefix"especifica el prefijo del módulo de donde obtener los daros, por defecto es el actual.
- "where" especifica una cadena de busqueda en SQL, por defecto es nula.
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.