Samouczek dotyczący bazy danych CodeIgniter: tworzenie, aktualizowanie, usuwanie

Spisie treści:

Anonim

CodeIgniter współpracuje z bazą danych

W poprzednim samouczku omówiliśmy podstawy aktywnego rekordu CodeIgniter oraz jak wstawiać, aktualizować, usuwać i czytać rekordy z bazy danych. W tym samouczku utworzymy modele baz danych i użyjemy formularzy do tworzenia i aktualizowania rekordów bazy danych. Jeśli jesteś zupełnie nowy w pracy z bazami danych w CodeIgniterze, radziłbyś przeczytać poprzedni tutorial

Konfiguracja bazy danych

Zaczniemy od stworzenia bazy danych projektu tutoriala. Stworzymy prostą bazę danych do zarządzania danymi kontaktowymi. Stworzymy prostą bazę danych z dwiema (2) tabelami nazw znajomych i miast, w których mieszkają. Relacja między przyjaciółmi i miastami jest typu jeden do jednego z identyfikatorem w miastach jako kluczem podstawowym i city_id jako kluczem obcym w tabelach znajomych .

Uruchom następujące skrypty, aby utworzyć bazę danych:

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

Stwórzmy teraz tabelę miast

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

Modele bazy danych CodeIgniter

Stworzymy teraz modele dla naszej bazy danych. Model jest częścią M MVC. Model dotyczy dostępu do danych, manipulacji danymi i logiki biznesowej.

W CodeIgniterze każdy model musi zdefiniować metody, które będzie obsługiwał. Zamiast powtarzać ten sam kod w każdym modelu, skorzystamy z dziedziczenia w programowaniu obiektowym i utworzymy klasę modelu nadrzędnego, która zdefiniuje podstawowe metody, które chcemy, aby nasze modele obsługiwały.

Poniższa tabela przedstawia metody, które zdefiniujemy oraz sposób dostępu do danych.

S / N metoda Opis
1 __zbudować Definiuje metodę konstruktora, która wywołuje metodę konstruktora nadrzędnego
2 get_all Pobiera wszystkie pola i rekordy z bazy danych bez żadnych warunków
3 get_by_id Pobiera pojedynczy wiersz z bazy danych przy użyciu klucza podstawowego typu INT o nazwie id
4 get_where Pobiera wszystkie pola z bazy danych na podstawie kryteriów opartych na
5 wstawić Wstawia nowy rekord do bazy danych
6 aktualizacja Aktualizuje istniejący rekord bazy danych na podstawie klucza podstawowego typu INT o nazwie id
7 kasować Usuwa istniejący rekord z bazy danych na podstawie klucza podstawowego typu INT o nazwie id

Poniższy obraz przedstawia diagram klas i sposób, w jaki modele potomne Pals i Cities są powiązane z modelem nadrzędnym BaseModel.

Stworzymy dwa modele, jak opisano na powyższym obrazku

Utwórz nową klasę BaseModel w application / models / BaseModel.php

Dodaj następujący kod

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

TUTAJ,

  • protected $ table = ''; definiuje chronioną zmienną o nazwie table. Zostanie to wypełnione przez odpowiednią klasę podrzędną, aby określić, z którą tabelą powinny współdziałać nasze metody klasy modelu bazowego.
  • funkcja public __construct () {…} definiuje metodę konstruktora i wykonuje metodę konstruktora klasy nadrzędnej CI_Model.
  • get_all () {…} używa biblioteki bazy danych i wartości zmiennej $ table do wykonania zapytania SELECT w naszej bazie danych.
  • get_by_id ($ id) {…} definiuje metodę pobierania pojedynczego wiersza z bazy danych i przyjmuje parametr $ id, który powinien mieć typ danych INT.
  • get_where ($ where) {…} definiuje metodę get, która pozwala ustawić klauzulę where.
  • insert ($ data) {…} definiuje metodę wstawiania i akceptuje parametr tablicy $ data, który zawiera wartości do zapisania w bazie danych.
  • update ($ id, $ data) {…} definiuje metodę aktualizacji i akceptuje parametr tablicy $ data, który zawiera wartości do zaktualizowania w bazie danych.
  • delete ($ id) {…} definiuje metodę usuwania, która przyjmuje parametr $ id, który powinien mieć typ danych INT.

Teraz, gdy skończyliśmy z klasą modelu nadrzędnego, stwórzmy nasze modele Pals

Utwórz nowy plik w application / models / Pals.php

Dodaj następujący kod

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

TUTAJ,

  • class Pals rozszerza BaseModel {…} rozszerza model nadrzędny BaseModel i automatycznie tworzy wszystkie metody zdefiniowane w BaseModel, do których uzyskano dostęp do klasy potomnej.
  • protected $ table = 'pals'; definiuje nazwę tabeli związaną z naszym modelem nadrzędnym
  • __construct () {…} inicjuje konstruktor nadrzędny
  • funkcja publiczna get_by_id ($ id) {…} zastępuje get_by_id, aby zapewnić niestandardową implementację specyficzną dla modelu Pals. Zapytanie o get_by_id używa sprzężenia w celu pobrania nazwy miasta z tabeli miast
  • funkcja publiczna get_all () {…} przesłania metodę get_all w celu zaimplementowania zapytania sprzężenia między tabelą pals i miast

Utwórz nowy plik w application / models / Cities.php


TUTAJ,

  • protected $ table = 'cities'; definiuje tabelę bazy danych modelu.

Jak widać z powyższego kodu, Inheritance oszczędza nam sporo czasu podczas pracy z modelami w CodeIgniterze. W następnej sekcji dowiemy się

Kontrolery menedżera kontaktów

Teraz, gdy stworzyliśmy modele, stwórzmy kontrolery dla naszej aplikacji. Będziemy mieć dwóch kontrolerów, mianowicie Kontakty i Miasta

Zacznijmy od miast

Utwórz nowy plik Cities.php w katalogu application / controllers

Dodaj następujący kod

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

TUTAJ,

  • Powyższy kod implementuje wszystkie metody potrzebne do tworzenia, aktualizowania, usuwania i odczytywania wierszy z bazy danych.

Utwórz inny plik Contacts.php w aplikacji / kontrolerach

Dodaj następujący kod

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

Widoki Menedżera kontaktów

Przyjrzeliśmy się już formularzom i walidacji w CodeIgniter w poprzednich samouczkach. Wykorzystamy kod, który opracowaliśmy w poprzednich samouczkach. Ze względu na kompletność odtworzymy kod, który stworzyliśmy w poprzednich samouczkach.

Widoki naszej aplikacji będą następujące

Możesz pobrać kod dla powyższych widoków, klikając łącze poniżej

CodeIgniter Contacts Manager Views Pobierz

Podsumowanie

W tym samouczku dowiesz się, jak tworzyć modele w CodeIgniter. Skorzystaliśmy z dziedziczenia w programowaniu obiektowym, aby promować możliwość ponownego wykorzystania kodu, tworząc model podstawowy, który implementuje cztery główne operacje bazodanowe: wstawianie, odczytywanie, aktualizowanie i usuwanie.

Przedstawiliśmy koncepcje za pomocą praktycznej aplikacji i będziemy to robić w następnych samouczkach, dodając więcej funkcji do aplikacji.