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.