ccc

Zend Framework: Bases de datos, Operaciones

src/Application/Controller/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;

use Application\Model\Entity\Usuarios;

class BasedatosController extends AbstractActionController {

public $dbAdapter;

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


// ***************************
public function mostrarAction() {
$this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter');
        $u = new Usuarios($this->dbAdapter);
$valores = array
(
            "titulo"    =>  "Mostrando datos desde TableGateway",
            'datos'     =>  $u->getUsuarios()
);
        return new ViewModel($valores);
}

// ***************************
public function verAction() {
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
        $u = new Usuarios($this->dbAdapter);
$id = (int) $this->params()->fromRoute('id', 0); // sacar el id por la url GET
$valores = array(
            "titulo"    =>  "Mostrando detalle del usuario",
            'datos'     =>  $u->getUsuarioPorId($id)
);
        return new ViewModel($valores);
}

// ***********************************
public function addAction() {
        $this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
        $u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usernuevo",
"email" => "usernuesssvo@gmail.com"
);
$u->addUsuario($data);
// $u->updateUsuario("3",$data);
// 

// una vez hecho mostrar todos los registros de nuevo
        $valores = array(
"titulo" => "Insertando uno nuevo",
"datos" => $u->getUsuarios()
        );
        return new ViewModel($valores);
    }

// ***********************************
public function updateAction() {
        $this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
        $u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usermodificado",
"email" => "usermodificado@gmail.com"
);
$u->updateUsuario("4",$data);

// una vez hecho mostrar todos los registros de nuevo
        $valores = array(
"titulo" => "Modificando un registro",
"datos" => $u->getUsuarios()
        );
        return new ViewModel($valores);
    }

// ***********************************
public function deleteAction() {
        $this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter');
        $u = new Usuarios($this->dbAdapter);
$data = array(
"nombre" => "usermodificado",
"email" => "usermodificado@gmail.com"
);
$u->deleteUsuario("4", $data);

// una vez hecho mostrar todos los registros de nuevo
        $valores = array(
"titulo" => "Borrando un registro",
"datos" => $u->getUsuarios()
        );
        return new ViewModel($valores);
    }
}
-------------------------------------------------------------------------------
src/Application/Model/Entity/Usuarios.php
namespace Application\Model\Entity;

use Zend\Db\TableGateway\TableGateway;
use Zend\Db\Adapter\Adapter;

class Usuarios extends TableGateway {

public function __construct(Adapter $adapter = null, $databaseSchema = null, ResultSet $selectResultPrototype = null) {
        return parent::__construct('usuarios', $adapter, $databaseSchema, $selectResultPrototype);
    }

public function getUsuarios() {
         $datos = $this->select();
         return $datos->toArray();
    }

public function getUsuarioPorId($id) {
        $id  = (int) $id;
        $registro = $this->select(array('id' => $id));
        $row = $registro->current();
        if (!$row) {
            throw new \Exception("No hay registros asociados al valor $id");
        }
        return $row;
     }
 
public function addUsuario($data=array()) {
           $this->insert($data);
     }

     public function updateUsuario($id, $data=array()) {
        $this->update($data, array('id' => $id));
    }

public function deleteUsuario($id) {
        $this->delete(array('id' => $id));
    }

}
---------------------------------------------------------------------
view/Application/basedatos/mostrar.phtml
<h1><?php echo $this->titulo?></h1>
<table style="width:400px; text-align:left">
    <tr>
        <th>Id</th>
        <th>Nombre</th>
        <th>E-Mail</th>
    </tr>
    <?php foreach ($this->datos as $dato){ ?>
        <tr style="background-color:<?php echo $this->cycle(array("#F0F0F0","#FFFFFF"))->next()?>">

            <td><?php echo $dato["id"] ?></td>
            <td><?php echo $dato["nombre"] ?></td>
            <td><?php echo $dato["email"] ?></td>
            <td>
                <a href="<?php echo $this->basePath() ?>/application/basedatos/ver/<?php echo $dato["id"]?>">ver</a>
            </td>
        </tr>
    <?php } ?>

    <?php
    $this->cycle()->assign(array("#F0F0F0", "#FFFFFF"));
    $this->cycle()->prev();
    ?>

</table>

Las vistas de add.phtml, delete.phtml y update.phtml serán idénticas a las de mostrar.phtml
------------------------------------------------------
Para verlo:
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/mostrar
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/add
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/update
http://localhost/zend/zendproyecto8LSG/public/application/basedatos/delete

No hay comentarios:

Publicar un comentario