CodeΒάση δεδομένων Igniter: Διαμόρφωση, Επεξεργασία, Ενημέρωση, Διαγραφή δεδομένων
Codeβάση δεδομένων ανάφλεξης
Στο προηγούμενο σεμινάριο, καλύψαμε τα βασικά του CodeΕνεργή εγγραφή Igniter και πώς να εισάγετε, να ενημερώνετε, να διαγράφετε και να διαβάζετε εγγραφές από τη βάση δεδομένων. Σε αυτό το σεμινάριο, θα δημιουργήσουμε μοντέλα βάσεων δεδομένων και θα χρησιμοποιήσουμε φόρμες για να δημιουργήσουμε και να ενημερώσουμε εγγραφές βάσης δεδομένων. Εάν είστε εντελώς νέοι στην εργασία με βάσεις δεδομένων στο CodeIgniter, τότε συμβούλευσες να διαβάσεις το προηγούμενο σεμινάριο.
CodeΡύθμιση βάσης δεδομένων ανάφλεξης
Θα ξεκινήσουμε δημιουργώντας τη βάση δεδομένων του εκπαιδευτικού έργου. Θα δημιουργήσουμε μια απλή βάση δεδομένων για τη διαχείριση των στοιχείων επικοινωνίας. Θα δημιουργήσουμε μια απλή βάση δεδομένων με δύο (2) πίνακες τα ονόματα των φίλων και των πόλεων στις οποίες ζουν. Η σχέση μεταξύ των φίλων και των πόλεων είναι ένα προς ένα με το id στις πόλεις ως πρωτεύον κλειδί και το city_id ως ξένο κλειδί στους πίνακες φίλους .
Εκτελέστε τα ακόλουθα σενάρια για να δημιουργήσετε τη βάση δεδομένων:
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`) );
Ας δημιουργήσουμε τώρα τον πίνακα πόλεων
CREATE TABLE `cities` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(245) DEFAULT NULL, PRIMARY KEY (`id`) ) ;
CodeΜοντέλα βάσης δεδομένων ανάφλεξης
Τώρα θα δημιουργήσουμε μοντέλα για τη βάση δεδομένων μας. Το Μοντέλο είναι το Μ μέρος του MVC. Το μοντέλο ασχολείται με την πρόσβαση δεδομένων, τον χειρισμό δεδομένων και την επιχειρηματική λογική.
In CodeΣτο Igniter, κάθε μοντέλο πρέπει να ορίσει τις μεθόδους που θα υποστηρίζει. Αντί να επαναλαμβάνουμε τον ίδιο κώδικα σε κάθε μοντέλο, θα εκμεταλλευτούμε την κληρονομικότητα στον αντικειμενοστρεφή προγραμματισμό και θα δημιουργήσουμε μια γονική κλάση μοντέλου που θα ορίζει τις βασικές μεθόδους που επιθυμούμε να υποστηρίζουν τα μοντέλα μας.
Ο παρακάτω πίνακας δείχνει τις μεθόδους που θα ορίσουμε και τον τρόπο πρόσβασης στα δεδομένα.
| S / N | Μέθοδος | Περιγραφή |
|---|---|---|
| 1 | __κατασκευάσει | Καθορίζει τη μέθοδο κατασκευής που καλεί τη μέθοδο γονικού κατασκευαστή |
| 2 | Πάρτα ολα | Ανακτά όλα τα πεδία και τις εγγραφές από τη βάση δεδομένων χωρίς όρους |
| 3 | get_by_id | Ανακτά μια μεμονωμένη σειρά από τη βάση δεδομένων χρησιμοποιώντας το πρωτεύον κλειδί τύπου INT με όνομα id |
| 4 | get_where | Ανακτά όλα τα πεδία από τη βάση δεδομένων με βάση τα βασικά κριτήρια |
| 5 | εισάγετε | Εισάγει μια νέα εγγραφή στη βάση δεδομένων |
| 6 | ενημέρωση | Ενημερώνει μια υπάρχουσα εγγραφή βάσης δεδομένων με βάση το πρωτεύον κλειδί τύπου INT με όνομα id |
| 7 | διαγράψετε | Διαγράφει μια υπάρχουσα εγγραφή από τη βάση δεδομένων με βάση το πρωτεύον κλειδί τύπου INT με όνομα id |
Η ακόλουθη εικόνα δείχνει το διάγραμμα τάξης και τον τρόπο με τον οποίο τα παιδικά μοντέλα Pals and Cities σχετίζονται με το γονικό μοντέλο BaseModel.
Θα δημιουργήσουμε δύο μοντέλα όπως περιγράφεται στην παραπάνω εικόνα
Δημιουργήστε μια νέα κλάση BaseModel στο application/models/BaseModel.php
Προσθέστε τον παρακάτω κώδικα
<?php
class BaseModel extends CI_Model {
protected $table = '';
public function __construct() {
parent::__construct();
}
public function get_all() {
return $this->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);
}
}
ΕΔΩ,
- προστατευμένο $table = ”; ορίζει μια προστατευμένη μεταβλητή με όνομα πίνακα. Αυτό θα συμπληρωθεί από την αντίστοιχη θυγατρική τάξη για να καθορίσετε με ποιον πίνακα θα πρέπει να αλληλεπιδρούν οι μέθοδοι κλάσης βασικού μοντέλου.
- δημόσια συνάρτηση __construct() {…} ορίζει τη μέθοδο κατασκευής και εκτελεί τη μέθοδο κατασκευής της γονικής κλάσης CI_Model.
- get_all() {…} χρησιμοποιεί τη βιβλιοθήκη βάσης δεδομένων και την τιμή της μεταβλητής $table για να εκτελέσει το ερώτημα SELECT στη βάση δεδομένων μας.
- get_by_id($id) {…} ορίζει τη μέθοδο για την ανάκτηση μιας μεμονωμένης γραμμής από τη βάση δεδομένων και δέχεται μια παράμετρο $id που θα πρέπει να είναι τύπου δεδομένων INT.
- get_where($where) Το {…} ορίζει τη μέθοδο λήψης που σας επιτρέπει να ορίσετε έναν όρο όπου.
- insert($data) {…} ορίζει τη μέθοδο εισαγωγής και αποδέχεται την παράμετρο του πίνακα $data που περιέχει τις τιμές που πρέπει να εγγραφούν στη βάση δεδομένων.
- update($id, $data) {…} ορίζει τη μέθοδο ενημέρωσης και αποδέχεται την παράμετρο πίνακα $data που περιέχει τις τιμές που πρέπει να ενημερωθούν στη βάση δεδομένων.
- delete($id) Το {…} ορίζει τη μέθοδο διαγραφής που δέχεται μια παράμετρο $id που θα πρέπει να είναι τύπου δεδομένων INT.
Τώρα που τελειώσαμε με την κατηγορία γονικού μοντέλου, ας δημιουργήσουμε τα μοντέλα μας Pals
Δημιουργήστε ένα νέο αρχείο στο application/models/Pals.php
Προσθέστε τον παρακάτω κώδικα
<?php
class Pals_model extends BaseModel {
protected $table = 'pals';
public function __construct() {
parent::__construct();
}
public function get_by_id($id) {
$this->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();
}
}
ΕΔΩ,
- class Pals επεκτείνει το BaseModel {…} επεκτείνει το γονικό μοντέλο BaseModel και κάνει αυτόματα όλες τις μεθόδους που ορίζονται στο BaseModel προσβάσιμες στη θυγατρική κλάση.
- προστατευμένο $table = 'φίλοι'; ορίζει το όνομα του πίνακα που σχετίζεται με το γονικό μας μοντέλο
- Η __construct() {…} προετοιμάζει τον γονικό κατασκευαστή
- η δημόσια συνάρτηση get_by_id($id) {…} παρακάμπτει το get_by_id για να παρέχει προσαρμοσμένη υλοποίηση ειδικά για το μοντέλο Pals. Το ερώτημα για get_by_id χρησιμοποιεί ένα σύνδεσμο για να ανακτήσει το όνομα της πόλης από τον πίνακα πόλεων
- η δημόσια συνάρτηση get_all() {…} παρακάμπτει τη μέθοδο get_all για την υλοποίηση ενός ερωτήματος σύνδεσης μεταξύ του πίνακα φίλων και πόλεων
Δημιουργήστε ένα νέο αρχείο στο application/models/Cities.php
<?php
class Cities extends BaseModel {
protected $table = 'cities';
public function __construct() {
parent::__construct();
}
}
ΕΔΩ,
προστατευμένο $table = 'πόλεις'; ορίζει τον πίνακα βάσης δεδομένων μοντέλου.
Όπως μπορείτε να δείτε από τον παραπάνω κώδικα, η κληρονομικότητα μας εξοικονομεί πολύ χρόνο όταν εργαζόμαστε με μοντέλα σε CodeΑνάφλεξη. Στην επόμενη ενότητα, θα μάθουμε
Ελεγκτές Διαχείρισης Επαφών
Τώρα που δημιουργήσαμε τα μοντέλα, ας δημιουργήσουμε τους ελεγκτές για την εφαρμογή μας. Θα έχουμε δύο ελεγκτές, δηλαδή τις Επαφές και τις Πόλεις
Ας ξεκινήσουμε με τις πόλεις
Δημιουργήστε ένα νέο αρχείο Cities.php στον κατάλογο εφαρμογών/ελεγκτών
Προσθέστε τον παρακάτω κώδικα
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Cities extends CI_Controller {
public function __construct() {
parent::__construct();
$this->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'));
}
}
ΕΔΩ,
Ο παραπάνω κώδικας υλοποιεί όλες τις μεθόδους που χρειάζονται για τη δημιουργία, ενημέρωση, διαγραφή και ανάγνωση σειρών από τη βάση δεδομένων.
Δημιουργήστε ένα άλλο αρχείο Contacts.php στην εφαρμογή/ελεγκτές
Προσθέστε τον παρακάτω κώδικα
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Contacts extends CI_Controller {
public function __construct() {
parent::__construct();
$this->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'));
}
}
Προβολές διαχειριστή επαφών
Έχουμε ήδη εξετάσει τις φόρμες και την επικύρωση στο CodeIgniter στα προηγούμενα εκπαιδευτικά σεμινάρια. Θα χρησιμοποιήσουμε τον κώδικα που αναπτύξαμε στα προηγούμενα εκπαιδευτικά σεμινάρια. Για λόγους πληρότητας, θα αναπαράγουμε τον κώδικα που δημιουργήσαμε στα προηγούμενα εκπαιδευτικά σεμινάρια.
Οι απόψεις της αίτησής μας θα είναι οι εξής
Μπορείτε να κάνετε λήψη του κώδικα για τις παραπάνω προβολές κάνοντας κλικ στον παρακάτω σύνδεσμο
CodeΛήψη προβολών του Igniter Contacts Manager
Περίληψη
Σε αυτό το σεμινάριο, θα μάθετε πώς να δημιουργείτε μοντέλα σε CodeIgniter. Εκμεταλλευτήκαμε την κληρονομικότητα στον αντικειμενοστραφή προγραμματισμό για να προωθήσουμε την επαναχρησιμοποίηση κώδικα δημιουργώντας ένα βασικό μοντέλο που υλοποιεί τις τέσσερις κύριες λειτουργίες της βάσης δεδομένων εισαγωγής, ανάγνωσης, ενημέρωσης και διαγραφής.
Έχουμε δείξει τις έννοιες χρησιμοποιώντας μια πρακτική εφαρμογή και θα συνεχίσουμε να το κάνουμε στα επόμενα σεμινάρια προσθέτοντας περισσότερη λειτουργικότητα στην εφαρμογή.


