SlideShare ist ein Scribd-Unternehmen logo
1 von 36
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

Weitere ähnliche Inhalte

Was ist angesagt?

Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysqlI LG
 
Ejemplo de formulario
Ejemplo de formularioEjemplo de formulario
Ejemplo de formularioOVAWEB
 
Wp config.php
Wp config.phpWp config.php
Wp config.phpgregozz
 
Haciendo Patria con Sinatra
Haciendo Patria con SinatraHaciendo Patria con Sinatra
Haciendo Patria con Sinatrafebuiles
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Asier Marqués
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalMediaglobe Innova
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con phpFer Nando
 
Guía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlGuía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlJesus Machicado Gomez
 
PHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoPHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoSpacetoshare
 
Base datos mysql y visual basic
Base datos mysql y visual basicBase datos mysql y visual basic
Base datos mysql y visual basicRafael Tobar Jame
 
Quasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en CQuasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en Cdegarden
 

Was ist angesagt? (20)

Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
Ejemplos de php_mysql
Ejemplos de php_mysqlEjemplos de php_mysql
Ejemplos de php_mysql
 
Inf 17 (chatbot)
Inf 17 (chatbot)Inf 17 (chatbot)
Inf 17 (chatbot)
 
Ejemplo de formulario
Ejemplo de formularioEjemplo de formulario
Ejemplo de formulario
 
Wp config.php
Wp config.phpWp config.php
Wp config.php
 
Haciendo Patria con Sinatra
Haciendo Patria con SinatraHaciendo Patria con Sinatra
Haciendo Patria con Sinatra
 
Informe chabot
Informe chabotInforme chabot
Informe chabot
 
Codigo Php
Codigo PhpCodigo Php
Codigo Php
 
Trabajo array
Trabajo arrayTrabajo array
Trabajo array
 
Clases de php
Clases de phpClases de php
Clases de php
 
Tarea 2 y_3
Tarea 2 y_3Tarea 2 y_3
Tarea 2 y_3
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
 
Curso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en DrupalCurso Drupal. Creacion de modulos en Drupal
Curso Drupal. Creacion de modulos en Drupal
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
 
Jquery
JqueryJquery
Jquery
 
Guía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlGuía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sql
 
PHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoPHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básico
 
Base datos mysql y visual basic
Base datos mysql y visual basicBase datos mysql y visual basic
Base datos mysql y visual basic
 
Quasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en CQuasi - Practicas de Programacion en C
Quasi - Practicas de Programacion en C
 

Andere mochten auch

Trabajo de informatica
Trabajo de informaticaTrabajo de informatica
Trabajo de informaticadaicy96
 
Global Entertainment and Media Outlook 2011- 2015 (PwC) - OCT11
Global Entertainment and Media Outlook 2011- 2015  (PwC) - OCT11Global Entertainment and Media Outlook 2011- 2015  (PwC) - OCT11
Global Entertainment and Media Outlook 2011- 2015 (PwC) - OCT11Retelur Marketing
 
Local Marketing
Local MarketingLocal Marketing
Local Marketingmelvinm
 
семінар в зош №18
семінар в зош №18семінар в зош №18
семінар в зош №18jekah
 
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...
Salt Paris meetup - décembre 2015 - La supervision pilotée par Salt avec carb...Arthur Lutz
 
Es posible la revolución educativa sin la integración
Es posible la revolución educativa sin la integraciónEs posible la revolución educativa sin la integración
Es posible la revolución educativa sin la integraciónNoelia de Jesus
 
веснянка 2015 краматорськ
веснянка 2015 краматорськвеснянка 2015 краматорськ
веснянка 2015 краматорськjekah
 
«приєднуйтесь до формування превентивної культури охорони праці»
«приєднуйтесь до формування превентивної культури охорони праці»«приєднуйтесь до формування превентивної культури охорони праці»
«приєднуйтесь до формування превентивної культури охорони праці»jekah
 
«солдатськими стежками»
«солдатськими стежками»«солдатськими стежками»
«солдатськими стежками»jekah
 
6нукннаказ по конкурсу сайтів
6нукннаказ по конкурсу сайтів6нукннаказ по конкурсу сайтів
6нукннаказ по конкурсу сайтівjekah
 
черга у днз №4 ластівка
черга у днз №4 ластівкачерга у днз №4 ластівка
черга у днз №4 ластівкаjekah
 
Presentacion aprendizaje colaborativo
Presentacion aprendizaje colaborativoPresentacion aprendizaje colaborativo
Presentacion aprendizaje colaborativosanty77
 
Delivering Happiness, The New Secret Ingredient by Sunny Grosso
Delivering Happiness, The New Secret Ingredient by Sunny GrossoDelivering Happiness, The New Secret Ingredient by Sunny Grosso
Delivering Happiness, The New Secret Ingredient by Sunny GrossoAudienceView
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion HydrateRodrigo Miranda
 
Folleto alejandro-acevedo-jhonatan-forero
Folleto alejandro-acevedo-jhonatan-foreroFolleto alejandro-acevedo-jhonatan-forero
Folleto alejandro-acevedo-jhonatan-foreroAlejandro Acevedo
 

Andere mochten auch (20)

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

Ähnlich wie Symfony parte 15 Consultas y Migración

Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion HydrateRodrigo Miranda
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion HydrateRodrigo Miranda
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentaleshydras_cs
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleArmando Nuñez Ramos
 
PowerShell para SharePoint OnPremises y Online, la herramienta compartida por...
PowerShell para SharePoint OnPremises y Online, la herramienta compartida por...PowerShell para SharePoint OnPremises y Online, la herramienta compartida por...
PowerShell para SharePoint OnPremises y Online, la herramienta compartida por...Juan Carlos Gonzalez
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Ricard Luquero
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)lenny
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)INSIGNIA4U
 
Collab365 - Como hacer de todo con PowerShell en SharePoint (OnPremises y On...
Collab365 -  Como hacer de todo con PowerShell en SharePoint (OnPremises y On...Collab365 -  Como hacer de todo con PowerShell en SharePoint (OnPremises y On...
Collab365 - Como hacer de todo con PowerShell en SharePoint (OnPremises y On...Juan Carlos Gonzalez
 

Ähnlich wie Symfony parte 15 Consultas y Migración (20)

Symfony parte 6
Symfony parte 6Symfony parte 6
Symfony parte 6
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Symfony parte 16
Symfony parte 16Symfony parte 16
Symfony parte 16
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 
9.laravel
9.laravel9.laravel
9.laravel
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentales
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
 
PowerShell para SharePoint OnPremises y Online, la herramienta compartida por...
PowerShell para SharePoint OnPremises y Online, la herramienta compartida por...PowerShell para SharePoint OnPremises y Online, la herramienta compartida por...
PowerShell para SharePoint OnPremises y Online, la herramienta compartida por...
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Collab365 - Como hacer de todo con PowerShell en SharePoint (OnPremises y On...
Collab365 -  Como hacer de todo con PowerShell en SharePoint (OnPremises y On...Collab365 -  Como hacer de todo con PowerShell en SharePoint (OnPremises y On...
Collab365 - Como hacer de todo con PowerShell en SharePoint (OnPremises y On...
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
Symfony parte 8
Symfony parte 8Symfony parte 8
Symfony parte 8
 

Mehr von Rodrigo Miranda

Symfony Pruebas Unitarias
Symfony Pruebas UnitariasSymfony Pruebas Unitarias
Symfony Pruebas UnitariasRodrigo Miranda
 
Symfony parte 11 Formularios
Symfony parte 11 FormulariosSymfony parte 11 Formularios
Symfony parte 11 FormulariosRodrigo Miranda
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework SymfonyRodrigo Miranda
 
Introducción Nivelación PHP
Introducción Nivelación PHPIntroducción Nivelación PHP
Introducción Nivelación PHPRodrigo Miranda
 
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje MoodleTicnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje MoodleRodrigo Miranda
 
Ticnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje MoodleTicnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje MoodleRodrigo Miranda
 
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle Rodrigo Miranda
 

Mehr von Rodrigo Miranda (17)

Symfony Pruebas Unitarias
Symfony Pruebas UnitariasSymfony Pruebas Unitarias
Symfony Pruebas Unitarias
 
Symfony parte 18
Symfony parte 18Symfony parte 18
Symfony parte 18
 
Symfony parte 17
Symfony parte 17Symfony parte 17
Symfony parte 17
 
Symfony parte 12
Symfony parte 12Symfony parte 12
Symfony parte 12
 
Symfony parte 11 Formularios
Symfony parte 11 FormulariosSymfony parte 11 Formularios
Symfony parte 11 Formularios
 
Symfony parte 10
Symfony parte 10Symfony parte 10
Symfony parte 10
 
Symfony parte 6
Symfony parte 6Symfony parte 6
Symfony parte 6
 
Symfony Parte 5
Symfony Parte 5Symfony Parte 5
Symfony Parte 5
 
Symfony parte 4
Symfony parte 4Symfony parte 4
Symfony parte 4
 
Symfony Parte 3
Symfony Parte 3Symfony Parte 3
Symfony Parte 3
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
Adentrándonos a PHP 5
Adentrándonos a PHP 5Adentrándonos a PHP 5
Adentrándonos a PHP 5
 
Introducción Nivelación PHP
Introducción Nivelación PHPIntroducción Nivelación PHP
Introducción Nivelación PHP
 
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje MoodleTicnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
 
Ticnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje MoodleTicnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje Moodle
 
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
 

Kürzlich hochgeladen

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 

Kürzlich hochgeladen (11)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 

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