CodeIgniter trabajando con base de datos
En el tutorial anterior, hemos cubierto los conceptos básicos del registro activo de CodeIgniter y cómo insertar, actualizar, eliminar y leer registros de la base de datos. En este tutorial, crearemos modelos de bases de datos y usaremos formularios para crear y actualizar registros de bases de datos. Si es completamente nuevo en el trabajo con bases de datos en CodeIgniter, le aconsejó leer el tutorial anterior.
Configuración de la base de datos
Comenzaremos creando la base de datos del proyecto del tutorial. Crearemos una base de datos simple para administrar los datos de contacto. Crearemos una base de datos simple con dos (2) tablas de nombres de amigos y ciudades en las que viven. La relación entre amigos y ciudades es de uno a uno con id en las ciudades como clave principal y city_id como clave externa en las tablas de amigos. .
Ejecute los siguientes scripts para crear la base de datos:
CREATE TABLE `pals` (`id` int(11) NOT NULL AUTO_INCREMENT,`city_id` int(11) DEFAULT NULL,`contact_name` varchar(245) DEFAULT NULL,`contact_number` varchar(245) DEFAULT NULL,`email_address` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`));
Creemos ahora la tabla de ciudades
CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;
Modelos de base de datos CodeIgniter
Ahora crearemos modelos para nuestra base de datos. El modelo es la parte M del MVC. El modelo se ocupa del acceso a los datos, la manipulación de datos y la lógica empresarial.
En CodeIgniter, cada modelo tiene que definir los métodos que admitirá. En lugar de repetir el mismo código en cada modelo, aprovecharemos la herencia en la programación orientada a objetos y crearemos una clase de modelo padre que definirá los métodos básicos que deseamos que admitan nuestros modelos.
La siguiente tabla muestra los métodos que definiremos y cómo se accederá a los datos.
S / N | Método | Descripción |
1 | __construir | Define el método constructor que llama al método constructor padre |
2 | obtener toda | Recupera todos los campos y registros de la base de datos sin condiciones |
3 | get_by_id | Recupera una sola fila de la base de datos utilizando la clave principal del tipo INT denominada id |
4 | llegar a dónde | Recupera todos los campos de la base de datos según los criterios basados en |
5 | insertar | Inserta un nuevo registro en la base de datos |
6 | actualizar | Actualiza un registro de base de datos existente basado en la clave principal del tipo INT llamado id |
7 | Eliminar | Elimina un registro existente de la base de datos en función de la clave principal del tipo INT llamado id |
La siguiente imagen muestra el diagrama de clases y cómo los modelos secundarios de Pals y Cities se relacionan con el modelo principal BaseModel.
Crearemos dos modelos como se describe en la imagen de arriba.
Cree una nueva clase BaseModel en application / models / BaseModel.php
Agrega el siguiente código
db->get($this->table)->result();}public function get_by_id($id) {return $this->db->get_where($this->table, array('id' => $id))->row();}public function get_where($where) {return $this->db->where($where)->get($this->table)->result();}public function insert($data) {return $this->db->insert($this->table, $data);}public function update($id, $data) {$this->db->where('id', $id);$this->db->update($this->table, $data);}public function delete($id) {$this->db->where('id', $id);$this->db->delete($this->table);}}
AQUÍ,
- protegido $ tabla = ''; define una variable protegida denominada tabla. Esto será llenado por la clase secundaria respectiva para especificar con qué tabla deben interactuar nuestros métodos de clase de modelo base.
- La función pública __construct () {…} define el método constructor y ejecuta el método constructor de la clase padre CI_Model.
- get_all () {…} usa la biblioteca de la base de datos y el valor de la variable $ table para ejecutar la consulta SELECT en nuestra base de datos.
- get_by_id ($ id) {…} define el método para recuperar una sola fila de la base de datos y acepta un parámetro $ id que debe ser del tipo de datos INT.
- get_where ($ where) {…} define el método get que le permite establecer una cláusula where.
- insert ($ data) {…} define el método de inserción y acepta el parámetro de matriz $ data que contiene los valores que se escribirán en la base de datos.
- update ($ id, $ data) {…} define el método de actualización y acepta el parámetro de matriz $ data que contiene los valores a actualizar en la base de datos.
- delete ($ id) {…} define el método de eliminación que acepta un parámetro de $ id que debe ser del tipo de datos INT.
ahora que hemos terminado con la clase de modelo padre, creemos nuestros modelos Pals
Crea un nuevo archivo en application / models / Pals.php
Agrega el siguiente código
db->where('pals.id', $id);$this->db->select('pals.*,cities.name');$this->db->from('pals');$this->db->join('cities', 'pals.city_id = cities.id');$query = $this->db->get();return $query->row();}public function get_all() {$this->db->select('pals.*,cities.name');$this->db->from('pals');$this->db->join('cities', 'pals.city_id = cities.id');$query = $this->db->get();return $query->result();}}
AQUÍ,
- class Pals extiende BaseModel {…} extiende el modelo padre BaseModel y automáticamente hace que todos los métodos definidos en BaseModel accedan a la clase hija.
- protegido $ tabla = 'amigos'; define el nombre de la tabla asociada con nuestro modelo padre
- __construct () {…} inicializa el constructor padre
- La función pública get_by_id ($ id) {…} anula get_by_id para proporcionar una implementación personalizada específica para el modelo de Pals. La consulta para get_by_id usa una combinación para recuperar el nombre de la ciudad de la tabla de ciudades
- La función pública get_all () {…} anula el método get_all para implementar una consulta de combinación entre amigos y la tabla de ciudades.
Cree un nuevo archivo en application / models / Cities.php
AQUÍ,
- protegido $ tabla = 'ciudades'; define la tabla de la base de datos del modelo.
Como puede ver en el código anterior, la herencia nos ahorra mucho tiempo cuando trabajamos con modelos en CodeIgniter. En la siguiente sección, aprenderemos
Controladores del administrador de contactos
Ahora que hemos creado los modelos, creemos los controladores para nuestra aplicación. Tendremos dos controladores, a saber, Contactos y Ciudades.
Empecemos por las ciudades
Cree un nuevo archivo Cities.php en el directorio application / controllers
Agrega el siguiente código
load->helper('url', 'form');$this->load->library('form_validation');$this->load->model('cities_model');}public function index() {$header['title'] = 'Cities Listing';$data['pals'] = $this->cities_model->get_all();$this->load->view('header',$header);$this->load->view('cities/index', $data);$this->load->view('footer');}public function create() {$header['title'] = 'Create City';$this->load->view('header',$header);$this->load->view('cities/create');$this->load->view('footer');}public function store() {$rules = array(array('field' => 'name','label' => 'City Name','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == TRUE) {$data = array('name' => $this->input->post('name'));$this->cities_model->insert($data);redirect(base_url('cities'));} else {$header['title'] = 'Create City';$this->load->view('header',$header);$this->load->view('cities/create');$this->load->view('footer');}}public function edit($id) {$header['title'] = 'Edit City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('cities/edit', $data);$this->load->view('footer');}public function update($id) {$rules = array(array('field' => 'name','label' => 'City Name','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == TRUE) {$data = array('name' => $this->input->post('name'));$this->cities_model->update($id,$data);redirect(base_url('cities'));} else {$header['title'] = 'Edit City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header',$header);$this->load->view('cities/create',$data);$this->load->view('footer');}}public function delete($id) {$header['title'] = 'Delete City';$data['city'] = $this->cities_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('cities/delete', $data);$this->load->view('footer');}public function destroy($id) {$this->cities_model->delete($id);redirect(base_url('cities'));}}
AQUÍ,
- El código anterior implementa todos los métodos necesarios para crear, actualizar, eliminar y leer filas de la base de datos.
Cree otro archivo Contacts.php en la aplicación / controladores
Agrega el siguiente código
load->helper('url', 'form');$this->load->library('form_validation');$this->load->model('pals_model');}public function index() {$header['title'] = 'Contacts List';$data['pals'] = $this->pals_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/index', $data);$this->load->view('footer');}public function create() {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/create', $data);$this->load->view('footer');}public function store() {$rules = array(array('field' => 'contact_name','label' => 'Contact Name','rules' => 'required'),array('field' => 'contact_number','label' => 'Contact Number','rules' => 'required','errors' => array('required' => 'You must provide a %s.',),),array('field' => 'email_address','label' => 'Email Address','rules' => 'required'),array('field' => 'city_id','label' => 'City','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == FALSE) {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$this->load->view('header', $header);$this->load->view('contacts/create', $data);$this->load->view('footer');} else {$data = array('city_id' => $this->input->post('city_id'),'contact_name' => $this->input->post('contact_name'),'contact_number' => $this->input->post('contact_number'),'email_address' => $this->input->post('email_address'),);$this->pals_model->insert($data);redirect(base_url('contacts'));}}public function edit($id) {$this->load->model('cities_model');$header['title'] = 'Edit Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('contacts/edit', $data);$this->load->view('footer');}public function update($id) {$rules = array(array('field' => 'contact_name','label' => 'Contact Name','rules' => 'required'),array('field' => 'contact_number','label' => 'Contact Number','rules' => 'required','errors' => array('required' => 'You must provide a %s.',),),array('field' => 'email_address','label' => 'Email Address','rules' => 'required'),array('field' => 'city_id','label' => 'City','rules' => 'required'));$this->form_validation->set_rules($rules);if ($this->form_validation->run() == FALSE) {$this->load->model('cities_model');$header['title'] = 'Create Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header', $header);$this->load->view('contacts/edit', $data);$this->load->view('footer');} else {$data = array('city_id' => $this->input->post('city_id'),'contact_name' => $this->input->post('contact_name'),'contact_number' => $this->input->post('contact_number'),'email_address' => $this->input->post('email_address'),);$this->pals_model->update($id, $data);redirect(base_url('contacts'));}}public function delete($id) {$this->load->model('cities_model');$header['title'] = 'Delete Contact';$data['cities'] = $this->cities_model->get_all();$data['pal'] = $this->pals_model->get_by_id($id);$this->load->view('header',$header);$this->load->view('contacts/delete',$data);$this->load->view('footer');}public function destroy($id){$this->pals_model->delete($id);redirect(base_url('contacts'));}}
Vistas del administrador de contactos
Ya analizamos los formularios y la validación en CodeIgniter en los tutoriales anteriores. Usaremos el código que desarrollamos en los tutoriales anteriores. En aras de la integridad, reproduciremos el código que creamos en los tutoriales anteriores.
Las vistas de nuestra aplicación serán las siguientes
Puede descargar el código para las vistas anteriores haciendo clic en el enlace a continuación
CodeIgniter Contactos Administrador Vistas Descargar
Resumen
En este tutorial, aprenderá a crear modelos en CodeIgniter. Aprovechamos la herencia en la programación orientada a objetos para promover la reutilización del código mediante la creación de un modelo base que implementa las cuatro operaciones principales de la base de datos: insertar, leer, actualizar y eliminar.
Hemos demostrado los conceptos utilizando una aplicación práctica, y continuaremos haciéndolo en los próximos tutoriales añadiendo más funcionalidad a la aplicación.