Підручник з бази даних 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

Тепер ми створимо моделі для нашої бази даних. Модель є M-частиною MVC. Модель стосується доступу до даних, маніпулювання даними та ділової логіки.

У CodeIgniter кожна модель повинна визначити методи, які вона буде підтримувати. Замість того, щоб повторювати один і той же код у кожній моделі, ми скористаємося спадщиною в об'єктно-орієнтованому програмуванні та створимо клас батьківської моделі, який визначить основні методи, які ми хочемо підтримувати нашими моделями.

У таблиці нижче показано методи, які ми визначимо, і спосіб доступу до даних.

S / N Метод Опис
1 __конструкція Визначає метод конструктора, який викликає метод батьківського конструктора
2 get_all Отримує всі поля та записи з бази даних без будь-яких умов
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

Додайте наступний код

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 = ''; визначає захищену змінну з іменем 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

Створіть новий файл у додатку / 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 = 'pals'; визначає ім'я таблиці, пов'язане з нашою батьківською моделлю
  • __construct () {…} ініціалізує батьківський конструктор
  • відкрита функція get_by_id ($ id) {…} замінює get_by_id, щоб забезпечити власну реалізацію, характерну для моделі Pals. Запит get_by_id використовує об’єднання для отримання назви міста з таблиці міста
  • відкрита функція get_all () {…} замінює метод get_all для реалізації запиту на приєднання між таблицями приятелів та міст

Створіть новий файл у додатку / 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. Ми скористалися перевагами успадкування в об'єктно-орієнтованому програмуванні для сприяння повторному використанню коду, створивши базову модель, яка реалізує чотири основні операції вставки, читання, оновлення та видалення баз даних.

Ми продемонстрували концепції, використовуючи практичний додаток, і будемо продовжувати це робити в наступних навчальних посібниках, додаючи додаткові функції до програми.