EJECUTAR CONSULTA SQL DIRECTAMENTE EN ZEND FRAMEWORK 2 – ZF2

361 views
Skip to first unread message

Juan Carlos Urquiza Suárez

unread,
Jan 7, 2014, 10:17:10 AM1/7/14
to zend-framew...@googlegroups.com

Aunque resulte sencillo a veces se nos puede presentar la necesidad de ejecutar código SQL directamente y no hacer uso de ningún ORM sea doctrine o propel, también no exista necesidad de utilizar TableGateway puede ser que simplemente necesitemos utilizar un código SQL normal.

Para esto haremos uso de ResultSet.

Primero debemos definir el Adapter para conectarnos a la base de datos, actualmente lo tengo inicializado en un proyecto en el cual utilizo dos conexiones distintas una para ORACLE y otra para MySQL en el mismo proyecto.

La misma esta inicializada en el modulo en desarrollo dentro del archivo Module.php de esta manera dentro de la función:getServiceConfig y poderlo llamar desde mi controlador:

'Vendedor' => function ($sm) {
$dbAdapter = $sm->get('db1');
return $dbAdapter;
}

El db1 corresponde a la base de datos si solo se trabaja con una base de datos es suficiente colocar en vez de esa instrucción lo siguiente:

$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');

En el controlador se utiliza el siguiente codigo:

public function detalleAction() {
$db = $this->getServiceLocator()->get('Vendedor');
$sql = "SELECT * from user";
$statement = $db->query($sql);
$results = $statement->execute();
$returnArray = array();
foreach ($results as $result) {
$returnArray[] = $result;
}
return new ViewModel(array('users' => $returnArray));
}

Finalmente en la vista se coloca el siguiente código para poder ver los datos:

<h3>Detalles Vendedores</h3>
<table class="table">
<tr>
<th>Codigo</th>
<th>Name</th>
<th>Celular</th>
<th>&nbsp;</th>
</tr>
<?php foreach ($users as $user) : ?>
<tr>
<td><?php echo $this->escapeHtml($user['name']); ?></td>
<td><?php echo $this->escapeHtml($user['id']); ?></td>
<td>
<a href="<?php echo $this->url('dashboard', array('controller' => 'vendedor', 'action' => 'detalle', 'id' => $user['id'])) ?>">Detalle</a>
</td>
</tr>
<?php endforeach; ?>
</table>

Espero esta información les sea útil y la puedan divulgar si creen que es importante.

Lo saque de mi sitio:

Saludos

Sergio Gabriel Rodriguez

unread,
Jan 7, 2014, 3:50:07 PM1/7/14
to zend-framew...@googlegroups.com
Excelente aporte Juan Carlos!


2014/1/7 Juan Carlos Urquiza Suárez <juanito...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "Zend Framework-hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a zend-framework-hi...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a zend-framew...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/zend-framework-hispano.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Patricio Cardenas

unread,
Jan 9, 2014, 10:42:51 AM1/9/14
to zend-framew...@googlegroups.com

Con esto iniciamos el dia

http://it-ebooks.info/book/3109/

saludos

--
Atte.

Patricio Cardenas Garay
PHP Developer
Cel : 78329819

www.pcgaray.com


Gonzalo Diaz Cruz

unread,
Jan 11, 2014, 1:23:13 AM1/11/14
to zend-framew...@googlegroups.com
En mi opinión... vez que es necesario recurrir a una consulta "complicada" en la aplicación, me da el indicio de que la consulta quedaría mejor "guardada" como View, SP o Trigger (según corresponda). Luego se puede acceder simplificadamente como si fuera cualquier tabla.

(es una "regla" que me formé con la experiencia, vale para cualquier framework y/o aplicación, incluso no-web)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Atentamente, Gonzalo Díaz Cruz - http://gon.cl/
Ingeniero de Ejecución en Computación e Informática
Universidad de Santiago de Chile

                          _  
                         | | 
  ____  ___  ____    ____| | 
 / _  |/ _ \|  _ \  / ___) | 
( (_| | |_| | | | |( (___| | 
 \___ |\___/|_| |_(_)____)\_)
(_____|                      
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Juan Carlos Urquiza Suárez

unread,
Jan 11, 2014, 7:55:04 AM1/11/14
to zend-framew...@googlegroups.com
Es una excelente sugerencia ahora en el desarrollo actual estamos trabajando bajo ese c

Patricio Cardenas

unread,
Jan 11, 2014, 9:09:20 AM1/11/14
to zend-framew...@googlegroups.com
yo tambien lo aplico de esta forma es la mejor ?

utilizar vistas en postgres :D claro jejeje

que base de datos trabajan ustedes.



El 11 de enero de 2014, 9:55, Juan Carlos Urquiza Suárez <juanito...@gmail.com> escribió:
Es una excelente sugerencia ahora en el desarrollo actual estamos trabajando bajo ese c
--
Has recibido este mensaje porque estás suscrito al grupo "Zend Framework-hispano" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a zend-framework-hi...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a zend-framew...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/zend-framework-hispano.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Sergio Gabriel Rodriguez

unread,
Jan 11, 2014, 10:42:03 AM1/11/14
to zend-framew...@googlegroups.com
Trabajo con Postgresql, y también es cierto que la mejor manera es trabajar con vistas, o funciones directamente al motor, pero también depende de que tipo de aplicación estemos desarrollando, si queremos que nuestra aplicación pueda funcionar con cualquier motor de bases de datos lo mejor es dejar que el framework arme los sql, de manera tal de que solo cambiando el Adapter nuestra aplicación siga funcionando, si en cambio sólo queremos que funcione con X motor la primer opción es la mas acertada.

Mis dos centavos!

Saludos.




2014/1/11 Patricio Cardenas <pcg...@gmail.com>

Patricio Cardenas

unread,
Jan 13, 2014, 6:55:04 AM1/13/14
to zend-framew...@googlegroups.com
buenos dia :

estoy totalmente deacuerdo.


Reply all
Reply to author
Forward
0 new messages