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.