En este artículo aprenderemos a conectar CodeIgniter 4 a una base de datos, crear tablas básicas y realizar una consulta desde un controlador para mostrar resultados en una vista. Si estás iniciando con este framework, esta guía te ayudará a comprender la configuración esencial para trabajar con MySQL.
Bases de Datos Compatibles con CodeIgniter 4
CodeIgniter 4 ofrece compatibilidad con diferentes motores de base de datos. Según la documentación oficial, soporta:
- MySQL
- SQLite3
- PostgreSQL
- SQL Server
- Oracle (mediante PDO)
Además, la documentación indica los drivers necesarios para cada motor. En este caso trabajaremos con MySQL, aunque la forma de conexión es muy similar para los demás motores.
Creación de la Base de Datos
Para este ejemplo utilizamos phpMyAdmin, aunque puedes usar Workbench o cualquier cliente MySQL.
1. Crear la base de datos
- En phpMyAdmin selecciona Nueva base de datos.
- Asigna el nombre: almacen
- Selecciona el collation:
utf8mb4_unicode_ci (recomendado por su compatibilidad con acentos, tildes y emojis) - Haz clic en Crear.
Creación de Tablas
Creamos dos tablas principales: almacen y productos, con una relación de uno a muchos.
Tabla: almacen
| Campo | Tipo | Descripción |
|---|---|---|
| id | INT AI PK | Identificador de almacén |
| nombre | VARCHAR(50) | Nombre del almacén |
| descripcion | TEXT (NULL) | Descripción opcional |
| fecha_alta | DATETIME | Fecha de alta (obligatorio) |
Una vez configurados los campos, guarda la tabla.
Tabla: productos
| Campo | Tipo | Descripción |
|---|---|---|
| id | INT AI PK | Identificador del producto |
| codigo | VARCHAR(20) | Código o código de barras |
| nombre | TINYTEXT | Nombre del producto |
| stock | INT | Existencias |
| id_almacen | INT | Relación con la tabla almacén |
| estatus | TINYINT | Estado del producto |
| fecha_alta | DATETIME | Fecha de creación |
| fecha_modifica | DATETIME | Última fecha de modificación |
Luego crea la relación:
- Llave foránea → id_almacen
- Referencia → almacen.id
- Acción en cascada: no action (para este ejemplo)
Configuración de la Conexión en CodeIgniter 4
CodeIgniter permite configurar la conexión a la base de datos desde dos ubicaciones:
1. Archivo .env (recomendado)
En la raíz del proyecto, descomenta y modifica:
database.default.hostname = 127.0.0.1
database.default.database = almacen
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi
database.default.port = 3306
Notas importantes:
- Puedes usar
localhosto127.0.0.1, aunque esta última es ligeramente más rápida. - Si instalaste MySQL con usuario y contraseña personalizados, cámbialos aquí.
- Si cambiaste el puerto, modifícalo también.
2. Archivo app/Config/Database.php
También puedes configurar los parámetros ahí. Sin embargo, CodeIgniter prioriza el archivo .env.
Solo usará Database.php si la configuración del .env está desactivada o comentada.
Probando la Conexión Desde un Controlador
Una vez creada la base de datos y configurada la conexión, podemos hacer una consulta simple.
En el controlador Productos, dentro del método index():
- Crear la conexión:
$db = \Config\Database::connect();
- Realizar la consulta:
$query = $db->query("SELECT codigo, nombre, stock FROM productos");
- Obtener los resultados como objetos:
$resultado = $query->getResult();
- Enviar los datos a la vista:
$data['productos'] = $resultado;
return view('productos/index', $data);
Mostrando los Datos en la Vista
En la vista productos/index.php, usa un foreach para mostrar los resultados:
<?php foreach ($productos as $producto): ?>
<tr>
<td><?= $producto->codigo ?></td>
<td><?= $producto->nombre ?></td>
<td><?= $producto->stock ?></td>
</tr>
<?php endforeach; ?>
Datos como Arreglo en Lugar de Objeto
Si prefieres trabajar con arreglos:
$resultado = $query->getResultArray();
Accederías así:
$producto['nombre']
Si cambias el modo de obtener resultados, recuerda ajustar la vista para evitar errores como “Trying to get property of non-object”.
Errores Comunes de Conexión
Algunos errores típicos:
1. Base de datos incorrecta
«Unable to connect to the database: Unknown database ‘almacenX'»
Solución: revisa el nombre en .env o Database.php.
2. Contraseña o usuario incorrectos
«Access denied for user ‘root’@’localhost'»
Solución: verifica credenciales.
3. Puerto equivocado
Solución: asegúrate de usar el puerto correcto (3306, salvo cambios).
Guía en Video
Conclusión
CodeIgniter 4 facilita la conexión a bases de datos gracias a su configuración sencilla y consistente. Ya sea desde el .env o desde Database.php, la conexión se gestiona de manera eficiente y limpia. Con esta guía ya puedes crear tu base de datos, conectarte a ella y mostrar los datos en una vista.
Este es el primer paso para implementar módulos más complejos, como CRUDs, relaciones avanzadas o modelos con el sistema ORM de CodeIgniter.