Урок за база данни CodeIgniter: Създаване, актуализиране, изтриване

Съдържание:

Anonim

CodeIgniter Работа с база данни

В предишния урок разгледахме основите на активния запис на CodeIgniter и как да вмъкваме, актуализираме, изтриваме и четем записи от базата данни. В този урок ще създадем модели на бази данни и ще използваме формуляри за създаване и актуализиране на записи на база данни. ако сте напълно нови в работата с бази данни в CodeIgniter, тогава сте посъветвали да прочетете предишния урок

Конфигурация на база данни

Ще започнем със създаването на базата данни за учебни проекти. Ще създадем проста база данни за управление на данните за контакт. Ще създадем проста база данни с две (2) таблици с имена на приятели и градове, в които живеят. Връзката между приятели и градове е едно към едно с идентификатор в градовете като първичен ключ и city_id като външен ключ в таблиците на pals .

Изпълнете следните скриптове, за да създадете базата данни:

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

Сега ще създадем модели за нашата база данни. Моделът е М част от MVC. Моделът се занимава с достъп до данни, манипулиране на данни и бизнес логика.

В CodeIgniter всеки модел трябва да дефинира методите, които ще поддържа. Вместо да повтаряме един и същ код във всеки модел, ние ще се възползваме от наследяването при обектно-ориентирано програмиране и ще създадем клас на родителски модел, който ще дефинира основните методи, които желаем да поддържат нашите модели.

Таблицата по-долу показва методите, които ще дефинираме и как ще се осъществява достъп до данните.

S / N Метод Описание
1 __конструиране Определя метода на конструктора, който извиква метода на конструктора майка
2 Вземи всичко Извлича всички полета и записи от базата данни без никакви условия
3 get_by_id Извлича един ред от базата данни, като използва първичния ключ от тип INT с име id
4 get_where Извлича всички полета от базата данни въз основа на базирани в критерии
5 вмъкване Вмъква нов запис в базата данни
6 актуализация Актуализира съществуващ запис на база данни, базиран на първичния ключ от тип INT с име id
7 Изтрий Изтрива съществуващ запис от базата данни въз основа на първичния ключ от тип INT с име id

Следващото изображение показва диаграмата на класовете и как детските модели на Pals и Cities са свързани с родителския модел BaseModel.

Ще създадем два модела, както е описано в горното изображение

Създайте нов клас BaseModel в application / models / 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 () {…} използва библиотеката на базата данни и стойността на променливата $ table, за да изпълни заявката SELECT срещу нашата база данни.
  • get_by_id ($ id) {…} дефинира метода за извличане на един ред от базата данни и приема параметър $ id, който трябва да бъде от тип данни INT.
  • get_where ($ where) {…} дефинира метода get, който ви позволява да зададете клауза where.
  • insert ($ data) {…} дефинира метода на вмъкване и приема параметъра на масива $ data, който съдържа стойностите, които трябва да бъдат записани в базата данни.
  • update ($ id, $ data) {…} дефинира метода за актуализация и приема параметъра на масива $ data, който съдържа стойностите, които трябва да бъдат актуализирани в базата данни.
  • delete ($ id) {…} дефинира метода за изтриване, който приема параметър на $ id, който трябва да е от тип данни INT.

сега, когато приключихме с клас родителски модел, нека създадем нашите модели на Pals

Създайте нов файл в application / 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();}}

ТУК,

  • 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


ТУК,

  • защитен $ table = 'градове'; дефинира таблицата на базата данни на модела.

Както можете да видите от дадения по-горе код, наследяването ни спестява много време при работа с модели в 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 Контакти Мениджър Изгледи Изтегляния

Обобщение

В този урок ще научите как да създавате модели в CodeIgniter. Възползвахме се от наследяването в обектно-ориентирано програмиране, за да насърчим повторната употреба на кода, като създадохме основен модел, който реализира четирите основни операции на базата данни за вмъкване, четене, актуализиране и изтриване.

Демонстрирахме концепциите, използвайки практическо приложение, и ще продължим да го правим в следващите уроци, като добавим повече функционалност към приложението.