Los creadores de esta herramienta crearon suficientes funciones para cubrir todas las necesidades de un sistema, phpDataMapper es reciente y todavía esta en desarrollo, pero va por buen camino.
Pueden visitar su pagina y guía oficial phpDataMapper.
$lista_registros=$persona->select()->from('persona')->where(array('id' => '3'));
Podriamos hacerlo así:
$lista_registros=$persona->query('SELECT * FROM persona WHERE id=3');
Más sencillo:
$lista_registros = $persona->all(array('id' => 3));
Seleccionamos la persona con el id 3.
En caso de que una tabla tenga relacion con otra por una clave foranea podemos hacer algo muy sencillo:
En caso de que persona tenga relación con publicación:
Ejemplo:
Archivo: Persona.php
<?php
class Persona extends phpDataMapper_Base {//inicio de la clase de mapeo
// definir la fuente de datos (tabla para el adaptador)
protected $_datasource = "persona";
// definir los atributos como propiedades de la clase con visibilidad publica
public $id = array ('type' => 'int', 'primary' => true, 'serial' => true );
public $nombre = array ('type' => 'string', 'required' => true );
public $email = array ('type' => 'string', 'required' => true );
public $web = array ('type' => 'string' );
public $publicaciones = array(
'type' => 'relation',
'relation' => 'HasMany',
'mapper' => 'Publicacion',
'where' => array('personaid' => 'entity.id')
);
}//fin de la clase de mapeo
?>
No es necesario modificar la tabla persona en la base de datos, $publicaciones hará las veces de una función.
El 'mapper' como sabemos, será la clase mapeo la cual vamos a usar para ese atributo en este caso Publicacion de tipo 'relation' donde personaid de la publicación sea igual al id de la persona: 'where' => array('personaid' => 'entity.id')
Archivo: Publicacion.php
Para crear este mapeo debemos crear en la base de datos: tabla publicacion, atributos: id int, nombre varchar, personaid int.
<?php
class Publicacion extends phpDataMapper_Base {//inicio del mapeo
protected $_datasource = "publicacion";
// definir los atributos como propiedades de la clase con visibilidad publica
public $id = array ('type' => 'int', 'primary' => true, 'serial' => true );
public $nombre = array ('type' => 'string', 'required' => true );
public $personaid = array('type' => 'int', 'key' => true, 'required' => true);
}//fin del mapeo
?>
Para definir una clave foranea: array('type' => 'int', 'key' => true, 'required' => true);
Archivo: index.php
<?php
include 'Conexion.php';
include 'Persona.php';
include 'Publicacion.php';
$persona = new Persona(Conexion::getConexion());
$lista_registros = $persona->all();
foreach ( $lista_registros as $registro ) {
echo 'Id: '.$registro->id.'<br/>';
echo ' Nombre: '.$registro->nombre.'<br/>';
echo ' Email: '.$registro->email.'<br/>';
echo ' Web: '.$registro->web.'<br/>';
echo '<br/>';
//Para mostrar todas las publicaciones
foreach($registro->publicaciones as $publicacion) {
echo "<p> ID: ".$publicacion->id.' Nombre: '. $publicacion->nombre. "</p>";
}
}
?>
Ejemplo de una salida:
Id: 2
Nombre: Alguien
Email: alguien@alguienweb.com
Web: www.alguienweb.com
ID: 3 Nombre: primera publicacion
ID: 4 Nombre: segunda publicacion
El alcance de este patrón de diseño se nota en las relaciones de las tablas, en el ejemplo anterior pudimos mostrar rápidamente los registros de publicaciones asociados a persona.
Otros frameworks también usan el Mapeo, yo recomiendo esta herramienta, ya que no se necesita depender de un frameworks para usarla, simplemente lo copiamos y empezamos a usarlo con nuestra aplicación, sin necesidad de modificar mucho nuestro código.
Postear en Twitter
Postear en Facebook
Feed RSS
Agregar a Favoritos
php, mapeo, registros, persona, where, array, id, tabla, publicacion, archivo, necesario, modificar, base, datos, publicaciones, hara, veces, funcion, personaid, crear, int, nombre, true, index
¡Amigo! te demorarás 10 segundos en crear tu cuenta.
Disfrutarás de todos los beneficios de DocumentoWeb.
