SlideShare una empresa de Scribd logo
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

Más contenido relacionado

PDF
Symfony parte 14 Consultas SQL - Páginador
PDF
Cómo domar SonataAdminBundle
PDF
Desarrollo código mantenible en WordPress utilizando Symfony
PDF
WordCamp Cantabria - Código mantenible con WordPress
DOC
Php
ODP
Desarrollo de aplicaciones web usando Catalyst y jQuery
PPT
Symfony parte 14 Consultas SQL - Páginador
Cómo domar SonataAdminBundle
Desarrollo código mantenible en WordPress utilizando Symfony
WordCamp Cantabria - Código mantenible con WordPress
Php
Desarrollo de aplicaciones web usando Catalyst y jQuery

La actualidad más candente (20)

DOCX
Informe grupal f_arinango_ cuenca
PDF
Ejemplos de php_mysql
PDF
Inf 17 (chatbot)
PDF
Ejemplo de formulario
RTF
Wp config.php
PDF
Haciendo Patria con Sinatra
PDF
Informe chabot
PPTX
Codigo Php
DOCX
Trabajo array
PPTX
Clases de php
PPTX
Tarea 2 y_3
PDF
Código mantenible, en Wordpress.
PDF
Curso Drupal. Creacion de modulos en Drupal
PDF
32773 php-basico
PDF
Intro aplicaciones web con php
PDF
Jquery
DOCX
Guía práctica desarrollo web con php 5 y my sql
PDF
PHP Tema 2 - Lenguaje PHP básico
DOCX
Base datos mysql y visual basic
PDF
Quasi - Practicas de Programacion en C
Informe grupal f_arinango_ cuenca
Ejemplos de php_mysql
Inf 17 (chatbot)
Ejemplo de formulario
Wp config.php
Haciendo Patria con Sinatra
Informe chabot
Codigo Php
Trabajo array
Clases de php
Tarea 2 y_3
Código mantenible, en Wordpress.
Curso Drupal. Creacion de modulos en Drupal
32773 php-basico
Intro aplicaciones web con php
Jquery
Guía práctica desarrollo web con php 5 y my sql
PHP Tema 2 - Lenguaje PHP básico
Base datos mysql y visual basic
Quasi - Practicas de Programacion en C
Publicidad

Destacado (20)

PPTX
Trabajo de informatica
PDF
Global Entertainment and Media Outlook 2011- 2015 (PwC) - OCT11
PPTX
Local Marketing
PPTX
семінар в зош №18
PDF
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
PPTX
Es posible la revolución educativa sin la integración
PPTX
веснянка 2015 краматорськ
PPTX
Las drogaas
PPTX
«приєднуйтесь до формування превентивної культури охорони праці»
PPTX
«солдатськими стежками»
PPTX
6нукннаказ по конкурсу сайтів
PPTX
черга у днз №4 ластівка
PPTX
Presentacion aprendizaje colaborativo
PDF
Devancer l'inattendu
PDF
Delivering Happiness, The New Secret Ingredient by Sunny Grosso
PDF
Symfony Consultas Sql Criterion Hydrate
PDF
Symfony parte 9
PPT
Symfony parte 7
PDF
Symfony parte 13
PDF
Folleto alejandro-acevedo-jhonatan-forero
Trabajo de informatica
Global Entertainment and Media Outlook 2011- 2015 (PwC) - OCT11
Local Marketing
семінар в зош №18
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
Es posible la revolución educativa sin la integración
веснянка 2015 краматорськ
Las drogaas
«приєднуйтесь до формування превентивної культури охорони праці»
«солдатськими стежками»
6нукннаказ по конкурсу сайтів
черга у днз №4 ластівка
Presentacion aprendizaje colaborativo
Devancer l'inattendu
Delivering Happiness, The New Secret Ingredient by Sunny Grosso
Symfony Consultas Sql Criterion Hydrate
Symfony parte 9
Symfony parte 7
Symfony parte 13
Folleto alejandro-acevedo-jhonatan-forero
Publicidad

Similar a Symfony parte 15 Consultas y Migración (20)

PPT
Symfony parte 6
PPT
Symfony Parte 2
PDF
Symfony Parte 3
PDF
Symfony Consultas Sql Criterion Hydrate
PDF
Symfony Consultas Sql Criterion Hydrate
PDF
Symfony Parte 5
DOCX
Tarea 4.docx siguientes conceptos de mys
PDF
Symfony parte 4
PPT
Symfony parte 6
PDF
Joinea - mongoDB en php y Symfony2
PDF
José Ramón Palanco - NoSQL Security [RootedCON 2011]
PDF
ORM Doctrine
PDF
Bases de datos con PHP y PDO
PPTX
PHP_Mysql.pptx
PPT
Adentrándonos al Framework Symfony
PDF
Sql injection
PPT
Gustavo php
PPT
Introducción a symfony - decharlas
PPT
Plantillajornadasversion2 100708010347-phpapp01
Symfony parte 6
Symfony Parte 2
Symfony Parte 3
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion Hydrate
Symfony Parte 5
Tarea 4.docx siguientes conceptos de mys
Symfony parte 4
Symfony parte 6
Joinea - mongoDB en php y Symfony2
José Ramón Palanco - NoSQL Security [RootedCON 2011]
ORM Doctrine
Bases de datos con PHP y PDO
PHP_Mysql.pptx
Adentrándonos al Framework Symfony
Sql injection
Gustavo php
Introducción a symfony - decharlas
Plantillajornadasversion2 100708010347-phpapp01

Más de Rodrigo Miranda (13)

PDF
Symfony Pruebas Unitarias
PDF
Symfony parte 18
PDF
Symfony parte 17
PDF
Symfony parte 16
PDF
Symfony parte 12
PDF
Symfony parte 11 Formularios
PDF
Symfony parte 10
PPT
Symfony parte 8
PPT
Adentrándonos a PHP 5
PPT
Introducción Nivelación PHP
PPT
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
PPT
Ticnet capacita en Plataforma de Aprendizaje Moodle
PPT
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Symfony Pruebas Unitarias
Symfony parte 18
Symfony parte 17
Symfony parte 16
Symfony parte 12
Symfony parte 11 Formularios
Symfony parte 10
Symfony parte 8
Adentrándonos a PHP 5
Introducción Nivelación PHP
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle

Último (20)

PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
Estrategia de apoyo tecnología miguel angel solis
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPT
Que son las redes de computadores y sus partes
PDF
clase auditoria informatica 2025.........
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
taller de informática - LEY DE OHM
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Propuesta BKP servidores con Acronis1.pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Estrategia de apoyo tecnología miguel angel solis
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
SAP Transportation Management para LSP, TM140 Col18
CyberOps Associate - Cisco Networking Academy
Presentación PASANTIAS AuditorioOO..pptx
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
introduccion a las_web en el 2025_mejoras.ppt
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Influencia-del-uso-de-redes-sociales.pdf
Que son las redes de computadores y sus partes
clase auditoria informatica 2025.........
Power Point Nicolás Carrasco (disertación Roblox).pptx
taller de informática - LEY DE OHM

Symfony parte 15 Consultas y Migración

  • 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
  • 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