Руководство по базе данных CodeIgniter: создание, обновление, удаление

Содержание:

Anonim

CodeIgniter Работа с базой данных

В предыдущем руководстве мы рассмотрели основы активной записи CodeIgniter, а также то, как вставлять, обновлять, удалять и читать записи из базы данных. В этом руководстве мы создадим модели баз данных и будем использовать формы для создания и обновления записей базы данных. если вы новичок в работе с базами данных в CodeIgniter, то вам рекомендуется прочитать предыдущее руководство.

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

Мы начнем с создания базы данных учебного проекта. Мы создадим простую базу данных для управления контактными данными. Мы создадим простую базу данных с двумя (2) таблицами с именами друзей и городов, в которых они живут. Отношения между друзьями и городами взаимно однозначны с id в городах в качестве первичного ключа и 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 __construct Определяет метод конструктора, который вызывает метод родительского конструктора
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 extends BaseModel {…} расширяет родительскую модель BaseModel и автоматически делает доступными все методы, определенные в BaseModel, для дочернего класса.
  • защищенный $ table = 'приятели'; определяет имя таблицы, связанной с нашей родительской моделью
  • __construct () {…} инициализирует родительский конструктор
  • публичная функция get_by_id ($ id) {…} переопределяет get_by_id, чтобы обеспечить индивидуальную реализацию, специфичную для модели Pals. Запрос для get_by_id использует соединение для извлечения названия города из таблицы городов.
  • публичная функция get_all () {…} переопределяет метод get_all для реализации запроса соединения между таблицей pals и cities

Создайте новый файл в application / models / Cities.php


ЗДЕСЬ,

  • защищенная таблица $ = 'города'; определяет таблицу базы данных модели.

Как видно из приведенного выше кода, наследование экономит нам много времени при работе с моделями в CodeIgniter. В следующем разделе мы узнаем

Контроллеры диспетчера контактов

Теперь, когда мы создали модели, давайте создадим контроллеры для нашего приложения. У нас будет два контроллера: Контакты и Города.

Начнем с городов

Создайте новый файл Cities.php в каталоге application / controllers

Добавьте следующий код

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. Мы воспользовались преимуществом наследования в объектно-ориентированном программировании, чтобы способствовать повторному использованию кода, создав базовую модель, которая реализует четыре основные операции с базой данных: вставку, чтение, обновление и удаление.

Мы продемонстрировали концепции, используя практическое приложение, и мы продолжим делать это в следующих руководствах, добавляя дополнительные функции в приложение.