consultar una tabla MySQL

Consultar una tabla MySQL desde CodeIgniter 4 – Quinta Parte

En la anterior parte de este tutorial, estabamos viendo una forma de traer datos desde una BD dentro del mismo Controlador. Ahora, vamos a ver c贸mo hacerlo usando el Modelo. Veamos entonces como consultar una tabla MySQL desde CodeIgniter 4, usando un Modelo.

La arquitectura t铆pica del MVC con sus tres bloques funcionando en armon铆a, es como la que se muestra a continuaci贸n:

consultar una tabla MySQL

Entonces, creamos nuestro Modelo en el directorio app/Models/. Yo lo he llamado ‘ContactModel.php’, y este es su c贸digo:

<?php
namespace App\Models;
use CodeIgniter\Database\ConnectionInterface;
use CodeIgniter\Model;

class ContactModel extends Model
{
protected $table="USERS";
protected $primarykey="id";
protected $allowedFields = ["name", "email"];

    public function LaConsulta()
    {
       $data = $this->db->query("SELECT name, email FROM USERS");
       return $data;
    }

    public function LaConsulta2()
    {
      $data = $this->db->query("SELECT name, email FROM USERS ORDER BY name ASC");
      return $data;
    }

    public function LaConsulta3()
    {
      $data = $this->db->query("SELECT name, email FROM USERS ORDER BY name DESC");
      return $data;
    }
}

?>

Y ahora nuestro Controlador luce as铆:

<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\ContactModel;

class Miapp extends BaseController
{
 /***
CREAMOS UNA INSTANCIA DEL OBJETO (EL MODELO EN ESTE CASO), AL QUE LLAMAMOS ElModelo,
Y SER脕 NUESTRA INSTANCIA PARA TODAS LAS FUNCIONES QUE CONTENGA LA CLASE.
***/
    function __construct()
    {
      $this->ElModelo = new ContactModel();
    }

    public function index()
    {

//TRAEMOS LA INSTANCIA ElModelo Y LO CARGAMOS A LA VARIABLE LOCAL modelo.
//DE ESTE MODO INVOCAMOS A LA FUNCI脫N LasConsulta (QUE EST脕 EN EL MODELO)
//Y FINALMENTE LA PASAMOS SU RESULTADO A LA VISTA CORRESPONDIENTE

    $modelo = $this->ElModelo;
    $query1 = $modelo->LaConsulta();
    $datos['result'] = $query1->getResultArray();
    echo view('head');
    echo view('encabezado');
    echo view('miapp', $datos);
    echo view('piedepagina');
    }

    public function ascendente()
    {
     $modelo = $this->ElModelo;
     $query2 = $modelo->LaConsulta2();
     $datos2['result'] = $query2->getResultArray();
     echo view('head');
     echo view('encabezado');
     echo view('miapp', $datos2);
     echo view('piedepagina');
    }

    public function descendente()
    {
     $modelo = $this->ElModelo;
     $query3 = $modelo->LaConsulta3();
     $datos3['result'] = $query3->getResultArray();
     echo view('head');
     echo view('encabezado');
     echo view('miapp', $datos3);
     echo view('piedepagina');
    }

    public function busqueda()
    {
     $busqueda = $_POST['criterio'];
     $query4 = $this->ElModelo->query("SELECT name, email FROM USERS WHERE name='$busqueda'");
     $datos3['result'] = $query4->getResultArray();
     echo view('head');
     echo view('encabezado');
     echo view('miapp', $datos3);
     echo view('piedepagina');
     }
}

?>

Bueno, notar谩s que dentro de la funci贸n de busqueda() he escrito el query, o sea, puse el query directamente en el Controlador. Pues me has pillado. Te confieso que hice eso solo a modo did谩ctico. Para que no te sientas 芦estafado禄 vamos a trasladar ese query al Modelo y configuramos el Controlador para que le pase el criterio de b煤squeda, y que el Modelo le retorne el resultado de la consulta.

Entonces, en el Modelo adicionamos la funci贸n de b煤squeda. Yo la llam茅 busca_x_nombre:

public function busca_x_nombre($criterio)
{
聽聽聽聽 $data = $this->db->query("SELECT name, email FROM USERS WHERE name='$criterio'");
聽聽聽聽 return $data;
}

La funci贸n busca_x_nombre dentro del Modelo se convertir谩 en nuestro m茅todo dentro del Controlador, para pasarle el criterio de b煤squeda al Modelo (Recuerda que podemos llamar al m茅todo de una funci贸n con los caracteres ->聽 [en Python se usa el punto . ]). Vale, en el Controlador queda as铆:

public function busqueda()
{
    $busqueda = $_POST['criterio'];
    $query4 = $this->ElModelo->busca_x_nombre($busqueda);
    $datos3['result'] = $query4->getResultArray();
    echo view('head');
    echo view('encabezado');
    echo view('miapp', $datos3);
    echo view('piedepagina');
}

Ya con esto tenemos nuestra peque帽a p谩gina de pruebas funcionando para hacer consultas a una BD.

Y eso es todo por el momento con esto del Modelo.

En el siguiente art铆culo vamos a meternos a una sesi贸n de est茅tica. Me refiero a algunos retoques de maquillaje que le har茅mos a la tabla de nuestra Vista.

Conclusiones


La Vista sigue siendo la misma, por eso esta vez no la puse en este post. Dentro del c贸digo del Controlador he comentariado las partes nuevas que dan el funcionamiento principal de su l贸gica.

Supongo que habr谩s notado que para la Vista es transparente todo lo que le suceda al Controlador y al Modelo. Claro, siempre cuando se mantenga el mismo nombre de las funciones en el Controlador, y que esos bloques de c贸digos sean funcionales.

En la p谩gina web de CodeIgniter 4, que habla sobre m茅todos de consultas a base de datos, podemos aprender m谩s de este tema.

 

< CUARTA PARTE 聽聽聽聽SEXTA PARTE>

 

Comparte esto en
Publicado en Desarrollo Web.