Registro activo de Codeigniter: insertar, seleccionar, actualizar, eliminar

Tabla de contenido:

Anonim

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.