Los datos son el linaje de la mayoría de las aplicaciones. Los datos deben almacenarse de tal manera que se puedan analizar más a fondo para proporcionar información y facilitar las decisiones comerciales. Los datos generalmente se almacenan en la base de datos. Entre las principales preocupaciones al interactuar con la base de datos se encuentra la seguridad, la facilidad de acceso y las implementaciones específicas del proveedor de la base de datos del lenguaje de consulta estructurado (SQL).
El registro activo es un patrón de diseño que facilita la interacción con la base de datos de manera fácil, segura y elocuente.
El registro activo tiene las siguientes ventajas
- Inserte, actualice y elimine registros con cadenas de métodos simples de registro activo
- Envía la entrada del usuario de forma segura utilizando parámetros
- Le permite trabajar con múltiples motores de base de datos como MySQL, SQL Server, etc.sin volver a escribir el código de la aplicación
- CodeIgniter utiliza controladores específicos para cada motor de base de datos en segundo plano.
En este tutorial, aprenderá:
- Cómo utilizar Active Record: Ejemplo
- Configuración de la base de datos CodeIgniter
- CodeIgniter Insertar registro activo
- CodeIgniter Seleccionar registro activo
- Actualización de CodeIgniter Active Record
- CodeIgniter Eliminar registro activo
Cómo utilizar Active Record: Ejemplo
En este tutorial, discutiremos la base de datos del tutorial. Tendremos dos mesas, una con pedidos y otra con detalles.
Este tutorial asume que tiene la base de datos MySQL instalada y funcionando.
Ejecute los siguientes scripts para crear la base de datos del tutorial:
CREATE SCHEMA ci_active_record;USE ci_active_record;CREATE TABLE `order_details` (`id` int(11) NOT NULL AUTO_INCREMENT,`order_id` int(11) DEFAULT NULL,`item` varchar(245) DEFAULT NULL,`quantity` int(11) DEFAULT '0',`price` decimal(10,2) DEFAULT '0.00',`sub_total` decimal(10,2) DEFAULT '0.00',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1;CREATE TABLE `orders` (`id` int(11) NOT NULL AUTO_INCREMENT,`date` timestamp NULL DEFAULT NULL,`customer_name` varchar(245) DEFAULT NULL,`customer_address` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1;
El código anterior crea una base de datos llamada ci_active_record y crea dos tablas, a saber, orders y order_details. La relación entre las dos tablas está definida por el ID de columna en orders y order_id en la tabla order_details.
Configuración de la base de datos CodeIgniter
Ahora configuraremos nuestra aplicación para poder comunicarnos con esta base de datos.
Abra el archivo de configuración de la base de datos ubicado en application / config / database.php
localice las siguientes líneas en el archivo de configuración
'hostname' => 'localhost','username' => '','password' => '','database' => '',
Actualice el código anterior a lo siguiente
'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',
Nota: deberá reemplazar el nombre de usuario y la contraseña por los que coincidan con su configuración de MySQL.
Además de los detalles de configuración de la base de datos, también necesitamos decirle a CodeIgniter que cargue la biblioteca de la base de datos cuando se cargue.
Paso 1) Abra el siguiente archivo application / config / autoload.php
Paso 2) Ubique las bibliotecas de claves de matriz $ autoload y cargue la biblioteca de la base de datos como se muestra a continuación
$autoload['libraries'] = array('database');
AQUÍ,
- El código anterior carga la biblioteca de la base de datos cuando se inicia la aplicación.
CodeIgniter Insertar registro activo
Para propósitos de prueba, crearemos un controlador y rutas definidas que usaremos para interactuar con nuestra aplicación a través del registro activo.
Cree un nuevo archivo application / controllers / ActiveRecordController.php
Agregue el siguiente código a ActiveRecordController.php
'2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}
AQUÍ,
- $ data = […] define una variable de matriz de datos que usa nombres de tabla de base de datos como claves de matriz y les asigna valores
- $ this-> db-> insert ('pedidos', $ datos); llama al método de inserción de la biblioteca de la base de datos, pasa el nombre de la tabla orders y la variable de matriz $ data como parámetro. Esta línea genera la instrucción SQL INSERT utilizando las claves de la matriz como nombres de campo y los valores de la matriz como los valores que se insertarán en la base de datos.
Ahora que hemos creado con éxito el método del controlador para el registro activo, ahora necesitaremos crear una ruta que llamaremos para ejecutar el método del controlador.
Ahora abra route.php en application / config / routes.php
agregue la siguiente línea a las rutas
$route['ar/insert'] = 'activerecordcontroller/store_order';
AQUÍ,
- Definimos una ruta ar / insert que llama al store_order del ActiveRecordController.
Iniciemos ahora el servidor web para probar nuestro método.
Ejecute el siguiente comando para iniciar el servidor integrado para PHP
cd C:\Sites\ci-appphp -S localhost:3000
AQUÍ,
- El navegador de comandos anterior a la línea de comandos e inicia el servidor integrado en el puerto 3000.
Cargue la siguiente URL en su navegador
http: // localhost: 3000 / ar / insert
Obtendrás los siguientes resultados
order has successfully been created
Abra la base de datos del tutorial de MySQL y consulte la tabla de pedidos
Podrá crear una fila nueva como se muestra en la imagen a continuación
CodeIgniter Seleccionar registro activo
En este apartado veremos cómo leer los registros que tenemos en la base de datos y mostrarlos en el navegador web como una lista desordenada.
Agregue el siguiente método al ActiveRecordController
public function index() {$query = $this->db->get('orders');echo "Orders Listing
";echo "
- ";foreach ($query->result() as $row) {echo "
- $row->customer_name ";}echo "
AQUÍ,
- $ consulta = $ esto-> db-> get ('pedidos'); ejecuta la consulta de selección contra la tabla de pedidos seleccionando todos los campos
- echo "
Listado de pedidos
"; muestra un encabezado HTML de tamaño 3 - echo "
- "; imprime la etiqueta de apertura para la lista HTML sin ordenar
- foreach ($ consulta-> resultado () como $ fila) {…} usó el ciclo for para recorrer los resultados devueltos desde la base de datos. echo "
- $ fila-> nombre_cliente "; imprime el nombre_cliente de la base de datos
Antes de cargar la siguiente URL, puede cargar un par de registros más en la base de datos.
Definamos ahora una ruta para la consulta SELECT
Abra la tabla application / config / routes.php
Agrega la siguiente ruta
$route['ar'] = 'activerecordcontroller';
AQUÍ,
- La ruta ar apunta al método de índice de la clase ActiveRecordController. Esto es por defecto, por eso no especificamos el método de índice como lo hizo para la ruta que inserta registros
Suponiendo que el servidor web ya se está ejecutando, cargue la siguiente URL
http: // localhost: 3000 / ar
Debería poder ver resultados muy similares a los siguientes en su navegador web
Actualización de CodeIgniter Active Record
En esta sección, hablaremos sobre cómo usar el registro activo para actualizar la base de datos. Digamos que queremos actualizar el nombre del cliente Joe Thomas a Joe.
Agregue el siguiente método a la clase ActiveRecordController
public function update_order() {$data = ['customer_name' => 'Joe',];$this->db->where('id', 1);$this->db->update('orders', $data);echo 'order has successfully been updated';}
AQUÍ,
- $ data = […] define los campos y valores que deseamos actualizar en la tabla de la base de datos
- $ this-> db-> where ('id', 1); establece la cláusula where de la consulta de actualización
- $ this-> db-> update ('pedidos', $ datos); genera la consulta de actualización SQL y la ejecuta en nuestra base de datos.
El código anterior producirá la siguiente declaración SQL
UPDATE orders SET customer_name = 'Joe' WHERE id = 1;
Actualicemos ahora la aplicación route.php / config / routes.php
Agrega la siguiente ruta
$route['ar/update'] = 'activerecordcontroller/update_order';
Guardar los cambios
Cargue la siguiente URL en el navegador web
Ahora visualicemos los registros de la base de datos y veamos si los cambios se han visto afectados.
Como puede ver en la imagen anterior, el primer registro se ha actualizado de Joe Thomas a Joe.
CodeIgniter Eliminar registro activo
Ahora borraremos un registro de la base de datos. Eliminaremos el registro con el id de 3.
Agregue el siguiente método al ActiveRecordController
public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}
AQUÍ,
- $ this-> db-> where ('id', 1); establece la cláusula where
- $ this-> db-> delete ('pedidos'); elimina la fila de la base de datos en la tabla de pedidos según los criterios establecidos mediante la cláusula where.
Para ejecutar el código anterior, cargue la siguiente URL en nuestro navegador web
http: // localhost: 3000 / ar / delete
Resumen
En este tutorial, ha aprendido a trabajar con un registro activo para insertar, actualizar, eliminar y seleccionar registros de la base de datos. Trabajamos con valores estáticos para crear registros, actualizar y eliminar. En el siguiente tutorial, crearemos una interfaz de usuario que el usuario puede usar para crear registros dinámicamente en la base de datos.