CodeIgniter Εργασία με βάση δεδομένων
Στο προηγούμενο σεμινάριο, έχουμε καλύψει τα βασικά στοιχεία της ενεργής εγγραφής CodeIgniter και τον τρόπο εισαγωγής, ενημέρωσης, διαγραφής και ανάγνωσης εγγραφών από τη βάση δεδομένων. Σε αυτό το σεμινάριο, θα δημιουργήσουμε μοντέλα βάσεων δεδομένων και θα χρησιμοποιήσουμε φόρμες για τη δημιουργία και ενημέρωση εγγραφών βάσης δεδομένων. εάν είστε εντελώς νέοι στην εργασία με βάσεις δεδομένων στο CodeIgniter, τότε σας συμβουλεύατε να διαβάσετε το προηγούμενο σεμινάριο
Διαμόρφωση βάσης δεδομένων
Θα ξεκινήσουμε δημιουργώντας τη βάση δεδομένων του προγράμματος εκμάθησης. Θα δημιουργήσουμε μια απλή βάση δεδομένων για τη διαχείριση των στοιχείων επικοινωνίας. Θα δημιουργήσουμε μια απλή βάση δεδομένων με δύο (2) πίνακες ονόματα φίλων και πόλεων στις οποίες ζουν. Η σχέση μεταξύ φίλων και πόλεων είναι ένα προς ένα με αναγνωριστικό στις πόλεις ως το πρωτεύον κλειδί και 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`)) ;
Μοντέλα βάσης δεδομένων CodeIgniter
Τώρα θα δημιουργήσουμε μοντέλα για τη βάση δεδομένων μας. Το μοντέλο είναι το μέρος M του MVC. Το μοντέλο ασχολείται με την πρόσβαση δεδομένων, τον χειρισμό δεδομένων και τη λογική των επιχειρήσεων
Στο CodeIgniter, κάθε μοντέλο πρέπει να καθορίσει τις μεθόδους που θα υποστηρίξει. Αντί να επαναλαμβάνουμε τον ίδιο κώδικα σε κάθε μοντέλο, θα εκμεταλλευτούμε την κληρονομικότητα σε αντικειμενοστρεφή προγραμματισμό και θα δημιουργήσουμε μια γονική τάξη μοντέλου που θα καθορίσει τις βασικές μεθόδους που επιθυμούμε να υποστηρίξουν τα μοντέλα μας.
Ο παρακάτω πίνακας δείχνει τις μεθόδους που θα ορίσουμε και τον τρόπο πρόσβασης στα δεδομένα.
Δ / Ν | Μέθοδος | Περιγραφή |
1 | __κατασκευάσουν | Ορίζει τη μέθοδο κατασκευαστή που καλεί τη μέθοδο γονικού κατασκευαστή |
2 | Πάρτα ολα | Ανακτά όλα τα πεδία και τις εγγραφές από τη βάση δεδομένων χωρίς όρους |
3 | get_by_id | Ανακτά μία γραμμή από τη βάση δεδομένων χρησιμοποιώντας το πρωτεύον κλειδί του τύπου INT με όνομα |
4 | get_where | Ανακτά όλα τα πεδία από τη βάση δεδομένων με βάση τα κριτήρια |
5 | εισάγετε | Εισάγει μια νέα εγγραφή στη βάση δεδομένων |
6 | εκσυγχρονίζω | Ενημερώνει μια υπάρχουσα εγγραφή βάσης δεδομένων με βάση το πρωτεύον κλειδί του τύπου INT που ονομάζεται id |
7 | διαγράφω | Διαγράφει μια υπάρχουσα εγγραφή από τη βάση δεδομένων με βάση το πρωτεύον κλειδί του τύπου INT που ονομάζεται id |
Η ακόλουθη εικόνα δείχνει το διάγραμμα τάξης και πώς σχετίζονται τα θυγατρικά μοντέλα Pals και Cities με το γονικό μοντέλο BaseModel.
Θα δημιουργήσουμε δύο μοντέλα όπως περιγράφεται στην παραπάνω εικόνα
Δημιουργήστε μια νέα κλάση BaseModel στην εφαρμογή / μοντέλα / BaseModel.php
Προσθέστε τον ακόλουθο κωδικό
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 () {…} χρησιμοποιεί τη βιβλιοθήκη βάσης δεδομένων και την τιμή του πίνακα $ μεταβλητής για να εκτελέσει το ερώτημα SELECT ενάντια στη βάση δεδομένων μας.
- get_by_id ($ id) {…} καθορίζει τη μέθοδο ανάκτησης μίας σειράς από τη βάση δεδομένων και δέχεται μια παράμετρο $ id που θα πρέπει να είναι τύπου δεδομένων INT.
- get_where ($ Where) {…} καθορίζει τη μέθοδο λήψης που σας επιτρέπει να ορίσετε μια ρήτρα όπου.
- insert ($ data) {…} ορίζει τη μέθοδο εισαγωγής και δέχεται την παράμετρο πίνακα δεδομένων $ που περιέχει τις τιμές που πρέπει να γραφτούν στη βάση δεδομένων.
- ενημέρωση ($ id, $ data) {…} ορίζει τη μέθοδο ενημέρωσης και δέχεται την παράμετρο πίνακα δεδομένων $ που περιέχει τις τιμές που πρέπει να ενημερωθούν στη βάση δεδομένων.
- delete ($ id) {…} ορίζει τη μέθοδο διαγραφής που δέχεται μια παράμετρο $ id που πρέπει να είναι τύπου δεδομένων INT.
τώρα που τελειώσαμε με την κατηγορία γονικών μοντέλων, ας δημιουργήσουμε τα μοντέλα Pals
Δημιουργήστε ένα νέο αρχείο στην εφαρμογή / models / Pals.php
Προσθέστε τον ακόλουθο κωδικό
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();}}
ΕΔΩ,
- Η κλάση Pals επεκτείνει το BaseModel {…} επεκτείνει το γονικό μοντέλο BaseModel και κάνει αυτόματα πρόσβαση σε όλες τις μεθόδους που ορίζονται στο BaseModel στην θυγατρική τάξη.
- προστατευμένο $ table = 'pals'; ορίζει το όνομα του πίνακα που σχετίζεται με το γονικό μας μοντέλο
- __construct () {…} αρχικοποιεί τον γονικό κατασκευαστή
- δημόσια συνάρτηση get_by_id ($ id) {…} αντικαθιστά το get_by_id για να παρέχει προσαρμοσμένη εφαρμογή συγκεκριμένη για το μοντέλο Pals. Το ερώτημα για get_by_id χρησιμοποιεί μια ένωση για να ανακτήσει το όνομα της πόλης από τον πίνακα πόλεων
- η δημόσια λειτουργία get_all () {…} αντικαθιστά τη μέθοδο get_all για την εφαρμογή ερωτήματος συμμετοχής μεταξύ πίνακα φίλων και πόλεων
Δημιουργήστε ένα νέο αρχείο στην εφαρμογή / models / Cities.php
ΕΔΩ,
- προστατευμένο $ table = "πόλεις"; ορίζει τον πίνακα βάσης δεδομένων μοντέλου.
Όπως μπορείτε να δείτε από τον παραπάνω κωδικό, το Inheritance μας εξοικονομεί πολύ χρόνο όταν δουλεύουμε με μοντέλα στο CodeIgniter. Στην επόμενη ενότητα, θα μάθουμε
Ελεγκτές διαχειριστή επαφών
Τώρα που έχουμε δημιουργήσει τα μοντέλα, ας δημιουργήσουμε τους ελεγκτές για την εφαρμογή μας. Θα έχουμε δύο ελεγκτές, δηλαδή Επαφές και Πόλεις
Ας ξεκινήσουμε με πόλεις
Δημιουργήστε ένα νέο αρχείο Cities.php στον κατάλογο εφαρμογών / ελεγκτών
Προσθέστε τον ακόλουθο κωδικό
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 στην εφαρμογή / ελεγκτές
Προσθέστε τον ακόλουθο κωδικό
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 στα προηγούμενα μαθήματα. Θα χρησιμοποιήσουμε τον κώδικα που δημιουργήσαμε στα προηγούμενα σεμινάρια. Για λόγους πληρότητας, θα αναπαραγάγουμε τον κώδικα που δημιουργήσαμε στα προηγούμενα σεμινάρια.
Οι απόψεις της εφαρμογής μας θα έχουν ως εξής
Μπορείτε να κατεβάσετε τον κωδικό για τις παραπάνω προβολές κάνοντας κλικ στον παρακάτω σύνδεσμο
Λήψη προβολών CodeIgniter Contacts Manager
Περίληψη
Σε αυτό το σεμινάριο, θα μάθετε πώς να δημιουργείτε μοντέλα στο CodeIgniter. Εκμεταλλευτήκαμε την κληρονομιά σε αντικειμενοστρεφή προγραμματισμό για να προωθήσουμε την επαναχρησιμοποίηση κώδικα δημιουργώντας ένα βασικό μοντέλο που εφαρμόζει τις τέσσερις κύριες λειτουργίες βάσης δεδομένων εισαγωγής, ανάγνωσης, ενημέρωσης και διαγραφής.
Έχουμε δείξει τις έννοιες χρησιμοποιώντας μια πρακτική εφαρμογή και θα συνεχίσουμε να το κάνουμε στα επόμενα σεμινάρια προσθέτοντας περισσότερη λειτουργικότητα στην εφαρμογή.