<h2>Otras Caracteristicas</h2> <p>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.</p> <p>Pueden visitar su pagina y guía oficial <a href="http://phpdatamapper.com/" target="_blank">phpDataMapper</a>.</p> <h2>Consultas Personalizadas</h2> <pre>$lista_registros=$persona->select()->from('persona')->where(array('id' => '3'));<br /></pre> <p>Podriamos hacerlo así:</p> <pre>$lista_registros=$persona->query('SELECT * FROM persona WHERE id=3');<br /></pre> <p>Más sencillo:</p> <pre>$lista_registros = $persona->all(array('id' => 3));</pre> <p>Seleccionamos la persona con el id 3.</p> <h2>Relaciones</h2> <p>En caso de que una tabla tenga relacion con otra por una clave foranea podemos hacer algo muy sencillo:</p> <p>En caso de que <strong>persona</strong> tenga relación con <strong>publicación</strong>:</p> <p>Ejemplo:</p> <p><em><strong>Archivo: Persona.php</strong></em></p> <pre><?php<br /><br />class Persona extends phpDataMapper_Base {//inicio de la clase de mapeo<br /><br /> // definir la fuente de datos (tabla para el adaptador)<br /> protected $_datasource = "persona";<br /><br /> // definir los atributos como propiedades de la clase con visibilidad publica<br /> public $id = array ('type' => 'int', 'primary' => true, 'serial' => true );<br /> public $nombre = array ('type' => 'string', 'required' => true );<br /> public $email = array ('type' => 'string', 'required' => true );<br /> public $web = array ('type' => 'string' );<br /><br /> public $publicaciones = array(<br /> 'type' => 'relation',<br /> 'relation' => 'HasMany',<br /> 'mapper' => 'Publicacion',<br /> 'where' => array('personaid' => 'entity.id')<br /> );<br /> <br />}//fin de la clase de mapeo<br /><br />?><br /></pre> <p><em><strong>No es necesario modificar la tabla persona en la base de datos, $publicaciones hará las veces de una función.</strong></em></p> <p>El <strong>'mapper'</strong> como sabemos, será la clase mapeo la cual vamos a usar para ese atributo en este caso <strong>Publicacion</strong> de tipo <strong>'relation' </strong>donde <strong>personaid</strong> de la publicación sea igual al <strong>id</strong> de la persona: <strong>'where' => array('personaid' => 'entity.id')</strong></p> <p><em><strong>Archivo: Publicacion.php</strong></em></p> <p><em>Para crear este mapeo debemos crear en la base de datos: tabla <strong>publicacion,</strong> atributos: <strong>id</strong> int, <strong>nombre</strong> varchar, <strong>personaid</strong> int.<br /></em></p> <pre><?php<br /><br />class Publicacion extends phpDataMapper_Base {//inicio del mapeo<br /><br /> protected $_datasource = "publicacion";<br /><br /> // definir los atributos como propiedades de la clase con visibilidad publica<br /> public $id = array ('type' => 'int', 'primary' => true, 'serial' => true );<br /> public $nombre = array ('type' => 'string', 'required' => true );<br /> public $personaid = array('type' => 'int', 'key' => true, 'required' => true);<br /><br />}//fin del mapeo<br /><br />?><br /></pre> <p>Para definir una clave foranea: <strong>array('type' => 'int', 'key' => true, 'required' => true);</strong></p> <p><strong><em>Archivo: index.php</em></strong></p> <pre><?php<br /><br />include 'Conexion.php';<br />include 'Persona.php';<br />include 'Publicacion.php';<br /><br />$persona = new Persona(Conexion::getConexion());<br /><br />$lista_registros = $persona->all();<br /><br />foreach ( $lista_registros as $registro ) {<br /><br /> echo 'Id: '.$registro->id.'<br/>';<br /> echo '&nbsp;&nbsp;Nombre: '.$registro->nombre.'<br/>';<br /> echo '&nbsp;&nbsp;Email: '.$registro->email.'<br/>';<br /> echo '&nbsp;&nbsp;Web: '.$registro->web.'<br/>';<br /> echo '<br/>';<br /><br /> //Para mostrar todas las publicaciones<br /> foreach($registro->publicaciones as $publicacion) {<br /><br /> echo "<p> ID: ".$publicacion->id.' Nombre: '. $publicacion->nombre. "</p>";<br /><br /> }<br /><br />}<br /><br />?><br /></pre> <p>Ejemplo de una salida:</p> <pre>Id: 2<br /> Nombre: Alguien<br /> Email: alguien@alguienweb.com<br /> Web: www.alguienweb.com<br /><br />ID: 3 Nombre: primera publicacion<br /><br />ID: 4 Nombre: segunda publicacion<br /></pre> <p>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.</p> <p>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.</p>
o salir
¡Amigo! te demorarás 10 segundos en crear tu cuenta.
Crear cuenta o acceder
Nick o e-mail Es el nombre visible de tu cuenta y te servirá para acceder a ella. Permitido espacios y cualquier caracter.
Contraseña Una clave única para acceder a tu cuenta.
Transcribe el código en la dirección indicada con el fin de evitar el SPAM.
Identificación Tu identificación es el nick o el e-mail de tu cuenta.
Contraseña La clave de tu cuenta. ¿No la recuerdas?
Recordar por diez días
Disfrutarás de todos los beneficios de DocumentoWeb.
Twitter Facebook Feed RSS
www.DocumentoWeb.com - Licencia Creative Commons