Cómo usar los Modelos en CodeIgniter 4

Veamos un ejemplo de cómo usar los Modelos en CodeIgniter 4. Su definición y su llamada desde el controlador.

El controlador

Hay varios pasos importantes para el uso de los modelos. Veamos como se le indica al controlador que utilizaremos un determinado modelo, y cómo se utiliza:

<?php namespace App\Controllers;

use App\Models\EntityModel;
use CodeIgniter\Controller;

class Home extends BaseController
{
  public function index()
  {
    $entity_model = new EntityModel();
    $data = [ 'lastentities' => $entity_model->getLast(5), 'variable' => 'Funciona' ]; 
    echo view('template_header'); 
    echo view('welcome_message', $data); 
    echo view('template_footer');
  }
}
/**
-----------------------------------------------------------------------
Filename: Home.php
Location: ./app/Controllers/Home.php
-----------------------------------------------------------------------
*/

Hemos definido el controlador Home, que es el que se llama inicialmente. Éste, con el use, dice que utilizará el modelo EntityModel, y luego extiende la clase Controller.

Una vez indicamos que vamos a utilizar el modelo, hay que inicializarlo y crear el objeto con la instrucción

$entity_model = new EntityModel();

Una vez creado el objeto, ya podemos utilizarlo llamando a sus funciones:

$entity_model->getLast(5);

El model

Veamos el model, porque tien su lógica a entender:

<?php namespace App\Models;

use CodeIgniter\Model;

class EntityModel extends Model
{
  protected $table = 'entity';
  protected $primaryKey = 'identity';
  protected $returnType = 'array'; 
  protected $useSoftDeletes = false; 
  protected $allowedFields = ['category_ID', 'name', 'feed', 'description', 'logo', 'language', 'web', 'dateadded', 'visited', 'enabled']; 
  protected $useTimestamps = false; 
  protected $createdField = 'created_at'; 
  protected $updatedField = 'updated_at'; 
  protected $deletedField = 'deleted_at'; 
  protected $validationRules = []; 
  protected $validationMessages = []; 
  protected $skipValidation = false; 

  public function getEntity($identity) { 
    return $this->where("identity=". $identity)->find(); 
  } 

  public function getLast($limit) { 
    return $this->orderBy("identity",'DESC')->limit(0, $limit)->find(); 
  }
}
/**
-----------------------------------------------------------------------
Filename: EntityModel.php
Location: ./app/Model/EntityModel.php
-----------------------------------------------------------------------
*/

Debéis tener en cuenta, que al definir un modelo, tal y como véis que hemos hecho, nos da ya por realizado unas funciones determinadas. El modelo, coincide con lo que tenemos en la base de datos, y eso nos permite desde el controlador utilizar muchas funciones de consultas a base de datos, sin tener que definirlas.

Aún así, como es lógico, podemos definir nuestras funciones con las consultas que queramos. Fijaos las que hemos definido nosotros y cómo hacemos las consultas a la base de datos:

public function getLast($limit) { 
return $this->orderBy("identity",'DESC')->limit(0, $limit)->find();
}

Este artículo, sólo pretende mostrar cómo se usan, y no su forma de funcionar. Eso lo dejaremos para el próximo artículo.

Espero que os sea de utilidad el artículo Cómo usar los Modelos en CodeIgniter 4.