Tutoriel de base de données CodeIgniter: créer, mettre à jour, supprimer

Table des matières:

Anonim

CodeIgniter Utilisation de la base de données

Dans le didacticiel précédent, nous avons couvert les bases de l'enregistrement actif CodeIgniter et comment insérer, mettre à jour, supprimer et lire des enregistrements de la base de données. Dans ce didacticiel, nous allons créer des modèles de base de données et utiliser des formulaires pour créer et mettre à jour des enregistrements de base de données. si vous êtes totalement novice dans l'utilisation des bases de données dans CodeIgniter, vous avez conseillé de lire le tutoriel précédent

Configuration de la base de données

Nous allons commencer par créer la base de données du projet du didacticiel. Nous allons créer une base de données simple pour gérer les coordonnées. Nous allons créer une base de données simple avec deux (2) tables nomme les amis et les villes dans lesquelles ils vivent. La relation entre les amis et les villes est un-à-un avec id dans les villes comme clé primaire et city_id comme clé étrangère dans les tables pals .

Exécutez les scripts suivants pour créer la base de données:

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`));

Créons maintenant la table des villes

CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;

Modèles de base de données CodeIgniter

Nous allons maintenant créer des modèles pour notre base de données. Le modèle est la partie M du MVC. Le modèle traite de l'accès aux données, de la manipulation des données et de la logique métier.

Dans CodeIgniter, chaque modèle doit définir les méthodes qu'il prendra en charge. Au lieu de répéter le même code dans chaque modèle, nous profiterons de l'héritage dans la programmation orientée objet et créerons une classe de modèle parent qui définira les méthodes de base que nous souhaitons que nos modèles prennent en charge.

Le tableau ci-dessous montre les méthodes que nous définirons et comment les données seront accessibles.

S / N Méthode Description
1 __construction Définit la méthode constructeur qui appelle la méthode constructeur parent
2 Avoir tout Récupère tous les champs et enregistrements de la base de données sans aucune condition
3 get_by_id Récupère une seule ligne de la base de données à l'aide de la clé primaire de type INT nommée id
4 get_where Récupère tous les champs de la base de données en fonction des critères basés sur
5 insérer Insère un nouvel enregistrement dans la base de données
6 mettre à jour Met à jour un enregistrement de base de données existant en fonction de la clé primaire de type INT nommée id
7 effacer Supprime un enregistrement existant de la base de données en fonction de la clé primaire de type INT nommée id

L'image suivante montre le diagramme de classes et la relation entre les modèles enfants Pals et Cities et le modèle parent BaseModel.

Nous allons créer deux modèles comme décrit dans l'image ci-dessus

Créer une nouvelle classe BaseModel dans application / models / BaseModel.php

Ajoutez le code suivant

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);}}

ICI,

  • protected $ table = ''; définit une variable protégée nommée table. Celui-ci sera renseigné par la classe enfant respective pour spécifier la table avec laquelle nos méthodes de classe de modèle de base doivent interagir.
  • public function __construct () {…} définit la méthode constructeur et exécute la méthode constructeur de la classe parent CI_Model.
  • get_all () {…} utilise la bibliothèque de base de données et la valeur de la variable $ table pour exécuter la requête SELECT sur notre base de données.
  • get_by_id ($ id) {…} définit la méthode pour récupérer une seule ligne de la base de données et accepte un paramètre $ id qui devrait être de type de données INT.
  • get_where ($ where) {…} définit la méthode get qui vous permet de définir une clause where.
  • insert ($ data) {…} définit la méthode d'insertion et accepte le paramètre de tableau $ data qui contient les valeurs à écrire dans la base de données.
  • update ($ id, $ data) {…} définit la méthode de mise à jour et accepte le paramètre de tableau $ data qui contient les valeurs à mettre à jour dans la base de données.
  • delete ($ id) {…} définit la méthode de suppression qui accepte un paramètre de $ id qui doit être du type de données INT.

maintenant que nous en avons terminé avec la classe de modèle parent, créons nos modèles Pals

Créez un nouveau fichier dans application / models / Pals.php

Ajoutez le code suivant

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();}}

ICI,

  • class Pals étend BaseModel {…} étend le modèle parent BaseModel et rend automatiquement toutes les méthodes définies dans le BaseModel accédées à la classe enfant.
  • protected $ table = 'copains'; définit le nom de la table associé à notre modèle parent
  • __construct () {…} initialise le constructeur parent
  • public function get_by_id ($ id) {…} remplace get_by_id pour fournir une implémentation personnalisée spécifique au modèle Pals. La requête de get_by_id utilise une jointure pour récupérer le nom de la ville dans la table des villes
  • public function get_all () {…} remplace la méthode get_all pour implémenter une requête de jointure entre la table pals et cities

Créez un nouveau fichier dans application / models / Cities.php


ICI,

  • protected $ table = 'villes'; définit la table de base de données modèle.

Comme vous pouvez le voir dans le code ci-dessus, l'héritage nous fait gagner beaucoup de temps lorsque vous travaillez avec des modèles dans CodeIgniter. Dans la section suivante, nous apprendrons

Contrôleurs du gestionnaire de contacts

Maintenant que nous avons créé les modèles, créons les contrôleurs pour notre application. Nous aurons deux contrôleurs à savoir les contacts et les villes

Commençons par les villes

Créez un nouveau fichier Cities.php dans le répertoire application / controllers

Ajoutez le code suivant

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'));}}

ICI,

  • Le code ci-dessus implémente toutes les méthodes nécessaires pour créer, mettre à jour, supprimer et lire des lignes de la base de données.

Créez un autre fichier Contacts.php dans l'application / les contrôleurs

Ajoutez le code suivant

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'));}}

Vues du gestionnaire de contacts

Nous avons déjà examiné les formulaires et la validation dans CodeIgniter dans les tutoriels précédents. Nous utiliserons le code que nous avons développé dans les tutoriels précédents. Par souci d'exhaustivité, nous reproduirons le code que nous avons créé dans les tutoriels précédents.

Les vues de notre application seront les suivantes

Vous pouvez télécharger le code pour les vues ci-dessus en cliquant sur le lien ci-dessous

Téléchargement des vues du Gestionnaire de contacts CodeIgniter

Résumé

Dans ce didacticiel, vous apprendrez à créer des modèles dans CodeIgniter. Nous avons profité de l'héritage dans la programmation orientée objet pour promouvoir la réutilisabilité du code en créant un modèle de base qui implémente les quatre principales opérations de base de données d'insertion, de lecture, de mise à jour et de suppression.

Nous avons démontré les concepts à l'aide d'une application pratique, et nous continuerons de le faire dans les prochains tutoriels en ajoutant plus de fonctionnalités à l'application.