• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Symfony parte 15 Consultas y Migración
 

Symfony parte 15 Consultas y Migración

on

  • 2,946 views

Consultas SQL, herramientas de migración

Consultas SQL, herramientas de migración

Statistics

Views

Total Views
2,946
Views on SlideShare
2,750
Embed Views
196

Actions

Likes
2
Downloads
2
Comments
1

6 Embeds 196

http://symfoneros.com 137
http://www.slideshare.net 24
http://gestion.poodu.cl 22
http://www.sfexception.com 10
http://webcache.googleusercontent.com 2
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Symfony parte 15 Consultas y Migración Symfony parte 15 Consultas y Migración Presentation Transcript

    • Symfony Parte 15 Más Consultas SQL– Migración Rodrigo Miranda rmiranda@poodu.cl contacto@rodrigomiranda.cl http://www.rodrigomiranda.cl
    • Consultas
SQL
‐
Propel: SELECT * FROM autor $autores = AutorPeer::doSelect(new Criteria()); Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
‐
Propel: SELECT * FROM post WHERE post.id_autor = $id_autor Order By post.id asc limit 2 $c = new Criteria(); $c->add(PostPeer::ID_AUTOR, $id_autor); $c->addAscendingOrderByColumn(PostPeer::ID); $c->setLimit(2); $autores = PostPeer:doSelect($c); Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
‐
Propel: SELECT * FROM post WHERE post.id_autor = $id_autor Order By post.id desc limit 2 $c = new Criteria(); $c->add(PostPeer::ID_AUTOR, $id_autor); $c->addDescendingOrderByColumn(PostPeer::ID); $c->setLimit(2); $autores = PostPeer:doSelect($c); Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
‐
Propel: SELECT * FROM autor WHERE autor.id = post.id_autor $c = new Criteria(); $c->addJoin(AutorPeer::ID, PostPeer::ID_AUTOR); $autores = AutorPeer:doSelect($c); Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
‐
Propel: SELECT * FROM autor LEFT JOIN post ON (post.id_autor = autor.id) $c = new Criteria(); $c->addJoin(AutorPeer::ID, PostPeer::ID_AUTOR, Criteria::LEFT_JOIN); $autores = AutorPeer:doSelect($c); Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
‐
Propel: SELECT * FROM autor WHERE autor.nombre LIKE ‘%Rodrigo%’ $c = new Criteria(); $c->add(AutorPeer::NOMBRE, ‘%Rodrigo%’, Criteria::LIKE); $autores = AutorPeer:doSelect($c); Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
‐
Propel: SELECT autor.id, autor.nombre FROM autor $c = new Criteria(); $c->addSelectColumn(AutorPeer::ID); $c->addSelectColumn(AutorPeer::NOMBRE); $autores = AutorPeer:doSelect($c); Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
Personalizadas
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
personalizadas $c = Propel::getConnection(); $query = “select avg(“.AutorPeer::EDAD.”) as promedioedad FROM “.AutorPeer::TABLE_NAME; $sentencia = $c->prepare($query); $sentencia->execute(); return $sentencia->fetch(PDO::FETCH_OBJ); } Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
personalizadas $c = Propel::getConnection(); $query = “select edad as edadautor FROM “.AutorPeer::TABLE_NAME; $sentencia = $c->prepare($query); $sentencia->execute(); return $sentencia->fetch(PDO::FETCH_OBJ); } Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Consultas
SQL
personalizadas public static function getConsultaPreparada() { $arreglo_resultado = array(); $resultados = array(); $c = Propel::getConnection(); $query = "SELECT ".AutorPeer::ID." AS getId,".AutorPeer::NOMBRE." AS etiqueta,".AutorPeer::DIRECCION." as direccion FROM ".AutorPeer::TABLE_NAME; $stmt = $c->prepare($query); $stmt->execute(); while($row = $stmt->fetch()){ $arreglo_resultado['getId'] = $row['getId']; $arreglo_resultado['etiqueta'] = $row['etiqueta']; $arreglo_resultado['direccion'] = $row['direccion']; $resultados[] = $arreglo_resultado; } return $resultados; } Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Template <?php foreach ($autor_list as $autor): ?> <tr> <td><a href="<?php echo url_for('autor/edit?id='. $autor['getId']) ?>"><?php echo $autor['getId'] ?></a></td> <td><?php echo $autor['etiqueta'] ?></td> <td><?php echo $autor['direccion'] ?></td> </tr> <?php endforeach; ?> Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Paginador
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Paginador: Cuando una consulta doSelect() devuelve un gran número de registros, es necesario un páginador que permita controlar la cantidad de registro por página, mejorando con ello la usabilidad de la aplicación y el control de memoria. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • sfPropelPager: Symfony incluye la clase sfPropelPager para páginar los resultados de una consulta. Esta clase utiliza la capa de abstracción de Propel. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Como
u:lizamos
sfPropelPager: $pager = new sfPropelPager(‘nombreModelo’, numeroPorPágina); $pager->setCriteria($c); //$c = contiene la consulta Criteria $pager->setPage(numeroPagina); $pager->init(); return $pager; Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Métodos
disponible
Template: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Nuevas
Consultas
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Criterion: Para realizar consultas SQL que consideren comparaciones OR debemos utilizar el método getNewCriterion. Con este método podemos indicarle a Criteria cuales son los elementos o los extremos que se incluirán en una comparación de este tipo. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • $sql = “Select * from capacitaciones where capacitaciones.region = $region and capacitaciones.estado = ‘A’ and (capacitaciones.fecha_desde like ‘%08%’ or capacitaciones.fecha_hasta like ‘%08%’)”; Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • $sql = “SELECT * FROM periodo_postulacion WHERE (periodo_postulacion.FECHA_DESDE LIKE ‘%2009%’ OR periodo_postulacion.FECHA_HASTA LIKE ‘%2009%’) ORDER BY periodo_postulacion.ID DESC LIMIT 50”; Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • $sql = “SELECT * FROM periodo_postulacion WHERE (periodo_postulacion.ID <> $idPeriodo AND periodo_postulacion.FECHA_DESDE <= $fechaHasta AND periodo_postulacion.ESTADO = ‘A’) LIMIT 1”; Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • $sql = “SELECT * FROM fichas_postulacion WHERE ((fichas_postulacion.NOMBRE LIKE ‘%rigoberto%’ OR fichas_postulacion.APELLIDO_PAT LIKE ‘%rigoberto%’ ) OR fichas_postulacion.APELLIDO_MAT LIKE ‘%rigoberto%’ ) ORDER BY fichas_postulacion.ID DESC”; Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Congelar
proyecto
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • freeze: Symfony provee de una utilidad vía comando que permite congelar un proyecto, es decir, incluye las librerías de Symfony necesarias en los directorios data/, lib/ y web/. Una vez congelado, el proyecto se transforma en una aplicación independiente y completamente ejecutable por sí misma. #./symfony freeze Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • unfreeze: Symfony, como es lógico, provee también de una utilidad para descongelar un proyecto, o devolverlo a su estado original. Para ello utilizamos la tarea unfreeze. Esta tarea borra los directorios data/ symfony/, lib/symfony/ y web/sf/. #./symfony unfreeze Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • rsync
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • rsync: Es una utilidad de linea de comandos capaz de realizar transferencias incrementales. Las transferencias incrementales transfiere los archivos modificados de manera completa. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • rsync
+
ssh: Symfony utiliza SSH conjuntamente con rsync para hacer más segura la transferencia de archivos de un equipo de desarrollo al servidor de producción. Las opciones de configuración utilizada por el cliente ssh se encuentran en el archivo config/ properties.ini del proyecto. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • config/properties.ini Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • config/rsync_exclude.txt Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • rsync
: •  Symfony provee de un comando que ejecuta internamente rsync en el modo de prueba, es decir, muestra los archivos que tienen que ser sincronizados. #./symfony project:deploy server-produccion Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • rsync
: •  Para realizar la sincronización definitivamente se debe incluir al comando anterior la opción --go. #./symfony project:deploy server-produccion --go Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Preguntas?
 Rodrigo Miranda Blog: www.rodrigomiranda.cl