La mayoría de las aplicaciones son datos de líneas de sangre. Los datos deben almacenarse para poder analizarlos más a fondo para proporcionar información y facilitar las decisiones comerciales. Los datos generalmente se almacenan en la base de datos. Las preocupaciones clave al interactuar con la base de datos incluyen la seguridad, la facilidad de acceso y la implementación específica del proveedor de una base de datos de lenguaje de consulta estructurado (SQL).
Un registro activo es un patrón de diseño que facilita la interacción con la base de datos de una manera fácil, segura y sorprendente.
El registro activo tiene las siguientes ventajas
- Inserte, actualice y elimine registros con cadenas de métodos simples de registro activo
- Inserta la entrada del usuario de forma segura utilizando parámetros
- Le permite trabajar con múltiples motores de bases de datos como MySQL, SQL Server, etc. No reescribir el código de la aplicación
- CodeIgniter utiliza controladores que son específicos para cada motor de base de datos en segundo plano.
En este tutorial, aprenderá:
Cómo utilizar Active Record: Ejemplo
En este tutorial, discutiremos la base de datos de tutoriales. Tendremos dos mesas, una con pedidos y otra con detalles.
Este tutorial asume que tiene instalada una base de datos MySQL.
Ejecute los siguientes scripts para crear una base de datos de tutoriales:
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, comandos y order_details. La relación entre las dos tablas está definida por el ID de columna en los comandos 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.
Un archivo de configuración de base de datos abierto ubicado en la aplicación / config / database.php
busque 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 se adapten a su configuración de MySQL.
Además de los datos de configuración de la base de datos, también debemos decirle a CodeIgniter que cargue la biblioteca de la base de datos cuando haya cargas.
Paso 1) Abra el siguiente archivo application / config / autoload.php
Paso 2) Localice las bibliotecas de edición principales $ 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 Entrar en registro activo
Para propósitos de prueba, crearemos un controlador definido y canales que usaremos para interactuar con nuestra aplicación a través de un registro activo.
Cree una nueva aplicación / controladores de archivos / ActiveRecordController.php
Agregue el siguiente código a ActiveRecordController.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class ActiveRecordController extends CI_Controller { public function store_order(){ $data = [ 'date' => '2018-12-19', 'customer_name' => 'Joe Thomas', 'customer_address' => 'US' ]; $this->db->insert('orders', $data); echo 'order has successfully been created'; } }
AQUÍ,
- $ detalles […] definir datos de matriz de variables que utilizan nombres de tablas de base de datos como claves de matriz y les asigna valores
- $ this-> db-> enter (‘comandos’, $ detalles); llamadas de método a la biblioteca de la base de datos, pasa los comandos de nombre de la tabla y los datos de la variable $ array como parámetro. Esta línea genera una instrucción INSERT SQL utilizando las claves de matriz como nombres de campo y valores de matriz como valores que se ingresarán en la base de datos.
Ahora que hemos creado el modo de controlador para registro activo, ahora necesitamos crear una ruta que solicitaremos para ejecutar el modo de controlador.
Ahora abra route.php en la aplicación / config / route.php
agregue la siguiente línea a los canales
$route['ar/insert'] = 'activerecordcontroller/store_order';
AQUÍ,
- Definimos una ruta de acceso / entrada a la que llama ActiveRecordController repository_order.
Ahora comenzamos con el servidor web para probar nuestro método.
Ejecute el siguiente comando para iniciar el servidor integrado para PHP
cd C:Sitesci-app php -S localhost:3000
AQUÍ,
- Navegue por la línea de comando de arriba hasta la línea de comando e inicie el servidor integrado en el puerto 3000.
Cargue la siguiente URL en su navegador
http: // localhost: 3000 / on / enter
Obtendrás los siguientes resultados
order has successfully been created
Abra la base de datos del tutorial de MySQL y verifique la tabla de comandos
Podrá crear una fila recién creada 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 "<h3>Orders Listing</h3>"; echo "<ul>"; foreach ($query->result() as $row) { echo "<li>$row->customer_name</li>"; } echo "</ul>"; }
AQUÍ,
- $ consulta = $ esto-> db-> get (‘comandos’); la consulta seleccionada se ejecuta contra la tabla de comandos seleccionando todos los campos
- macalla «
Listado de pedidos
se muestra un encabezado HTML de tamaño 3
- macalla «
- «; imprime la etiqueta de inicio de una lista HTML desordenada
- foreach ($ consulta-> resultado () como $ fila) {…} usó el bucle para recorrer los resultados devueltos desde la base de datos. macalla «
- $ fila-> nombre_cliente
«; imprime el nombre_cliente de la base de datos
Antes de cargar la siguiente URL, es posible que desee cargar algunos registros más en la base de datos.
Ahora define una ruta para la consulta SELECT
Abrir tabla de aplicación / configuración / canales.php
Agrega la siguiente ruta
$route['ar'] = 'activerecordcontroller';
AQUÍ,
- La ruta se centra en el modo de índice de la clase ActiveRecordController. Este es el valor predeterminado, por lo que no especificamos el método de índice como lo hizo para la forma en que envía los registros.
Suponiendo que el servidor web ya se está ejecutando, cargue la siguiente URL
Debería poder ver resultados muy similares a los siguientes en su navegador web
Registro de actualización activo de CodeIgniter
En esta sección, aprenderemos cómo usar el registro activo para actualizar la base de datos. Supongamos que queremos actualizar el nombre de cliente de Joe Thomas para 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Í,
- $ detalles […] los campos y valores que queremos actualizar están definidos en la tabla de la base de datos
- $ this-> db-> place (‘id’, 1); arregla la cláusula en la que se actualiza la pregunta
- $ this-> db-> update (‘comandos’, $ detalles); la consulta de actualización genera SQL y se 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 la aplicación / config / route.php ahora
Agrega la siguiente ruta
$route['ar/update'] = 'activerecordcontroller/update_order';
Guardar los cambios
Cargue la siguiente URL en el navegador web
Ahora mostraremos los registros de la base de datos y veremos si los cambios se vieron afectados.
Como puede ver en la imagen mencionada anteriormente, el primer registro se actualizó de Joe Thomas a Joe.
Eliminar el registro activo de CodeIgniter
Ahora borraremos un registro de la base de datos. Eliminaremos el registro con ID 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-> place (‘id’, 1); establece la cláusula que contiene
- $ this-> db-> delete (‘comandos’); elimina el conjunto de bases de datos en la tabla de comandos según los criterios establecidos y la cláusula en la que se utiliza.
Para ejecutar el código anterior, cargue la siguiente URL en nuestro navegador web
http: // localhost: 3000 / en / eliminar
Resumen
En este tutorial, aprendió a trabajar con un registro activo para ingresar, actualizar, eliminar y seleccionar registros de la base de datos. Trabajamos con valores estáticos para crear, actualizar y borrar registros. En el siguiente tutorial, crearemos una interfaz de usuario que el usuario puede usar para crear registros dinámicamente en la base de datos.