ccc

Zend Framework: Base de datos

config/autoload/local.php
return array
(
    'service_manager'=>array(
        'factories'=>array(
            'Zend\Db\Adapter'=>'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
    'db'=>array(
        'username'=>'root',
        'password'=>'',
        'driver'=>'Pdo',
        'dsn'=>'mysql:dbname=pruebazend;host:localhost',
        'driver_options'=>array(
            PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES \'utf8\''
        ),
    ),        
);
---------------------------------------------------------------------------------------------------------

Creamos un nuevo controlador:
src/Application/Controler/BasedatosController.php

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Adapter\Adapter;
use Zend\Db\Sql\Sql;

class BasedatosController extends AbstractActionController {

public $dbAdapter;

    public function indexAction()   {
        return new ViewModel();
    }

// ***************************
public function resultAction() {

$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
$sql = "select * from tablazend order by id desc";
$result = $this->dbAdapter->query($sql, Adapter::QUERY_MODE_EXECUTE);
$datos = $result->toArray(); // toArray para q lo muestre más formateado
return(new ViewModel(
array(
"titulo"=> "Mi primera conexión zend a base datos usando result",
"datos" => $datos
)
));
}




// ***************************
    public function sqlAction() { // Otra forma: lo mismo que el otro pero con SQL
        $this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter');
        $sql = new Sql($this->dbAdapter);
        $select = $sql->select()
                      ->from('tablazend')
                      ->where(array('id'=>'2'))
                      ->order('id desc');
        $selectString = $sql->getSqlStringForSqlObject($select);
// echo $selectString;
$result = $this->dbAdapter->query($selectString, Adapter::QUERY_MODE_EXECUTE);
        $datos = $result->toArray();
        return(new ViewModel(
array(
"titulo"=> "Mi primera conexión zend a base datos usando SQL",
"datos" => $datos
)
));
    }
}
--------------------------------------------------------------
Añadir el nuevo controlador a:
application/config/module.config.php:

....
'controllers' => array(
        'invokables' => array(
            'Application\Controller\Index' => 'Application\Controller\IndexController',
            'Application\Controller\Formulario' => 'Application\Controller\FormularioController',
'Application\Controller\Basedatos' => 'Application\Controller\BasedatosController'
        ),

    ),
....
---------------------------------------------------------

Ahora las vistas para esos dos métodos:
view/application/basedatos/result.phtml

<h1><?php echo $this->titulo;?></h1>
<?php
foreach ($this->datos as $registro) {
echo "Id:".$registro["id"]."<br>";
echo "Nombre:".$registro["nombre"]."<br>";
echo "Email:".$registro["email"]."<hr>";
}

?>
view/application/basedatos/sql.phtml
<h1><?php echo $this->titulo;?></h1>
<?php
foreach ($this->datos as $registro) {
echo "Id:".$registro["id"]."<br>";
echo "Nombre:".$registro["nombre"]."<br>";
echo "Email:".$registro["email"]."<hr>";
}

?>
-------------------------------------------------
Para verlo:
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/sql
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/result

No hay comentarios:

Publicar un comentario