Your SlideShare is downloading. ×
0
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Symfony parte 15 Consultas y Migración

1,779

Published on

Consultas SQL, herramientas de migración

Consultas SQL, herramientas de migración

Published in: Technology, Business
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,779
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
1
Likes
2
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 15 Más Consultas SQL– Migración 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. Nuevas
Consultas
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 20. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 21. 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
  • 22. $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
  • 23. $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
  • 24. $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
  • 25. $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
  • 26. Congelar
proyecto
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 27. 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
  • 28. 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
  • 29. rsync
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 30. 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
  • 31. 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
  • 32. config/properties.ini Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 33. config/rsync_exclude.txt Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 34. 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
  • 35. 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
  • 36. Preguntas?
 Rodrigo Miranda Blog: www.rodrigomiranda.cl

×