CodeIgniter che lavora con il database
Nel tutorial precedente, abbiamo coperto le basi del record attivo CodeIgniter e come inserire, aggiornare, eliminare e leggere i record dal database. In questo tutorial, creeremo modelli di database e utilizzeremo i moduli per creare e aggiornare i record del database. se sei completamente nuovo nel lavorare con i database in CodeIgniter, hai consigliato di leggere il tutorial precedente
Configurazione del database
Inizieremo creando il database del progetto tutorial. Creeremo un semplice database per la gestione dei dettagli di contatto. Creeremo un semplice database con due (2) tabelle di nomi di amici e città in cui vivono. La relazione tra amici e città è uno a uno con id nelle città come chiave primaria e city_id come chiave straniera nelle tabelle degli amici .
Eseguire i seguenti script per creare il database:
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`));
Creiamo ora la tabella delle città
CREATE TABLE `cities` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ;
Modelli di database CodeIgniter
Creeremo ora modelli per il nostro database. Il modello è la parte M dell'MVC. Il modello si occupa dell'accesso ai dati, della manipolazione dei dati e della logica aziendale.
In CodeIgniter, ogni modello deve definire i metodi che supporterà. Invece di ripetere lo stesso codice in ogni modello, trarremo vantaggio dall'ereditarietà nella programmazione orientata agli oggetti e creeremo una classe del modello padre che definirà i metodi di base che desideriamo che i nostri modelli supportino.
La tabella seguente mostra i metodi che definiremo e la modalità di accesso ai dati.
S / N | Metodo | Descrizione |
1 | __costruire | Definisce il metodo del costruttore che chiama il metodo del costruttore padre |
2 | prendi tutto | Recupera tutti i campi e i record dal database senza alcuna condizione |
3 | get_by_id | Recupera una singola riga dal database utilizzando la chiave primaria di tipo INT denominata id |
4 | get_where | Recupera tutti i campi dal database in base ai criteri in base |
5 | inserire | Inserisce un nuovo record nel database |
6 | aggiornare | Aggiorna un record di database esistente in base alla chiave primaria di tipo INT denominata id |
7 | Elimina | Elimina un record esistente dal database in base alla chiave primaria di tipo INT denominata id |
L'immagine seguente mostra il diagramma delle classi e il modo in cui i modelli figli di Pals e Cities si relazionano al modello padre BaseModel.
Creeremo due modelli come descritto nell'immagine sopra
Crea una nuova classe BaseModel in application / models / BaseModel.php
Aggiungi il codice seguente
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);}}
QUI,
- protetto $ table = ''; definisce una variabile protetta denominata table. Questo verrà popolato dalla rispettiva classe figlia per specificare con quale tabella devono interagire i nostri metodi di classe del modello base.
- la funzione pubblica __construct () {…} definisce il metodo del costruttore ed esegue il metodo del costruttore della classe genitore CI_Model.
- get_all () {…} utilizza la libreria del database e il valore della variabile $ table per eseguire la query SELECT sul nostro database.
- get_by_id ($ id) {…} definisce il metodo per recuperare una singola riga dal database e accetta un parametro $ id che dovrebbe essere di tipo di dati INT.
- get_where ($ where) {…} definisce il metodo get che consente di impostare una clausola where.
- insert ($ data) {…} definisce il metodo di inserimento e accetta il parametro di matrice $ data che contiene i valori da scrivere nel database.
- update ($ id, $ data) {…} definisce il metodo update e accetta il parametro array $ data che contiene i valori da aggiornare nel database.
- delete ($ id) {…} definisce il metodo di eliminazione che accetta un parametro di $ id che dovrebbe essere di tipo di dati INT.
ora che abbiamo finito con la classe del modello genitore, creiamo i nostri modelli Pals
Crea un nuovo file in application / models / Pals.php
Aggiungi il codice seguente
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();}}
QUI,
- class Pals estende BaseModel {…} estende il modello genitore BaseModel e rende automaticamente accessibili tutti i metodi definiti nel BaseModel alla classe figlia.
- protetto $ table = 'pals'; definisce il nome della tabella associato al nostro modello genitore
- __construct () {…} inizializza il costruttore genitore
- la funzione pubblica get_by_id ($ id) {…} sovrascrive get_by_id per fornire un'implementazione personalizzata specifica per il modello Pals. La query per get_by_id utilizza un join per recuperare il nome della città dalla tabella delle città
- la funzione pubblica get_all () {…} sovrascrive il metodo get_all per implementare una query di unione tra la tabella degli amici e delle città
Crea un nuovo file in application / models / Cities.php
QUI,
- protetto $ table = 'città'; definisce la tabella del database del modello.
Come puoi vedere dal codice sopra indicato, Inheritance ci fa risparmiare molto tempo quando si lavora con i modelli in CodeIgniter. Nella prossima sezione impareremo
Controller del gestore dei contatti
Ora che abbiamo creato i modelli, creiamo i controller per la nostra applicazione. Avremo due controller, ovvero Contatti e Città
Cominciamo con le città
Crea un nuovo file Cities.php nella directory application / controllers
Aggiungi il codice seguente
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'));}}
QUI,
- Il codice precedente implementa tutti i metodi necessari per creare, aggiornare, eliminare e leggere righe dal database.
Crea un altro file Contacts.php in application / controller
Aggiungi il codice seguente
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'));}}
Visualizzazioni di Gestione contatti
Abbiamo già esaminato i moduli e la convalida in CodeIgniter nei tutorial precedenti. Useremo il codice che abbiamo sviluppato nei tutorial precedenti. Per completezza riproduciamo il codice che abbiamo creato nei tutorial precedenti.
Le visualizzazioni della nostra applicazione saranno le seguenti
È possibile scaricare il codice per le viste precedenti facendo clic sul collegamento in basso
CodeIgniter Contatti Manager Visualizzazioni Download
Sommario
In questo tutorial imparerai come creare modelli in CodeIgniter. Abbiamo sfruttato l'ereditarietà nella programmazione orientata agli oggetti per promuovere la riusabilità del codice creando un modello di base che implementa le quattro principali operazioni di database di inserimento, lettura, aggiornamento ed eliminazione.
Abbiamo dimostrato i concetti utilizzando un'applicazione pratica e continueremo a farlo nei prossimi tutorial aggiungendo ulteriori funzionalità all'applicazione.