Your SlideShare is downloading. ×
Symfony parte 14 Consultas SQL - Páginador
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Symfony parte 14 Consultas SQL - Páginador

3,273
views

Published on

Revisión de algunas consultas SQL con Criteria y la utilización del páginador sfPropelPager.

Revisión de algunas consultas SQL con Criteria y la utilización del páginador sfPropelPager.

Published in: Technology, Business

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,273
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Symfony Parte 14 Consultas sql - Paginador Rodrigo Miranda rmiranda@poodu.cl contacto@rodrigomiranda.cl http://www.rodrigomiranda.cl
  • 2. Consultas
SQL
‐
Propel: SELECT * FROM autor $autores = AutorPeer::doSelect(new Criteria()); Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. Consultas
Personalizadas
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. Paginador
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. Métodos
disponible
Template: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 19. Nuestro
Módulo
Encuesta
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 20. Nuestra
accion
index
Módulo
Encuesta:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 21. En
EncuestaPeer:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 22. app.yml
de
nuestra
aplicación:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 23. Template:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 24. Paginador:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 25. Preguntas?
 Rodrigo Miranda Blog: www.rodrigomiranda.cl