Tutorial do banco de dados do CodeIgniter: Criar, atualizar, excluir

Índice:

Anonim

CodeIgniter trabalhando com banco de dados

No tutorial anterior, cobrimos os fundamentos do registro ativo do CodeIgniter e como inserir, atualizar, excluir e ler registros do banco de dados. Neste tutorial, criaremos modelos de banco de dados e usaremos formulários para criar e atualizar os registros do banco de dados. se você é totalmente novo no trabalho com bancos de dados no CodeIgniter, então você aconselhou a leitura do tutorial anterior

Configuração de Banco de Dados

Começaremos criando o banco de dados do projeto do tutorial. Criaremos um banco de dados simples para gerenciar detalhes de contato. Criaremos um banco de dados simples com duas (2) tabelas de nomes de amigos e cidades em que eles moram. A relação entre amigos e cidades é um-para-um com id em cidades como a chave primária e city_id como a chave estrangeira nas tabelas de amigos .

Execute os seguintes scripts para criar o banco de dados:

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

Vamos agora criar a tabela de cidades

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

Modelos de banco de dados CodeIgniter

Agora vamos criar modelos para nosso banco de dados. O modelo é a parte M do MVC. O modelo lida com acesso a dados, manipulação de dados e lógica de negócios.

No CodeIgniter, cada modelo deve definir os métodos que suportará. Em vez de repetir o mesmo código em cada modelo, tiraremos vantagem da herança na programação orientada a objetos e criaremos uma classe de modelo pai que definirá os métodos básicos que desejamos que nossos modelos suportem.

A tabela abaixo mostra os métodos que iremos definir e como os dados serão acessados.

S / N Método Descrição
1 __construir Define o método construtor que chama o método construtor pai
2 get_all Recupera todos os campos e registros do banco de dados sem quaisquer condições
3 get_by_id Recupera uma única linha do banco de dados usando a chave primária do tipo INT chamada id
4 get_where Recupera todos os campos do banco de dados com base em critérios
5 inserir Insere um novo registro no banco de dados
6 atualizar Atualiza um registro de banco de dados existente com base na chave primária do tipo INT chamada id
7 excluir Exclui um registro existente do banco de dados com base na chave primária do tipo INT chamada id

A imagem a seguir mostra o diagrama de classes e como os modelos filhos Pals e Cities se relacionam com o modelo pai BaseModel.

Vamos criar dois modelos conforme descrito na imagem acima

Crie uma nova classe BaseModel em application / models / BaseModel.php

Adicione o seguinte código

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

AQUI,

  • protegido $ mesa = ''; define uma variável protegida chamada tabela. Isso será preenchido pela respectiva classe filha para especificar com qual tabela nossos métodos de classe de modelo base devem interagir.
  • public function __construct () {…} define o método do construtor e executa o método do construtor da classe pai CI_Model.
  • get_all () {…} usa a biblioteca de banco de dados e o valor da variável $ table para executar a consulta SELECT em nosso banco de dados.
  • get_by_id ($ id) {…} define o método para recuperar uma única linha do banco de dados e aceita um parâmetro $ id que deve ser do tipo de dados INT.
  • get_where ($ where) {…} define o método get que permite a você definir uma cláusula where.
  • insert ($ data) {…} define o método de inserção e aceita o parâmetro de array $ data que contém os valores a serem gravados no banco de dados.
  • update ($ id, $ data) {…} define o método de atualização e aceita o parâmetro de array $ data que contém os valores a serem atualizados no banco de dados.
  • delete ($ id) {…} define o método de exclusão que aceita um parâmetro de $ id que deve ser do tipo de dados INT.

agora que terminamos com a classe do modelo pai, vamos criar nossos modelos Pals

Crie um novo arquivo em application / models / Pals.php

Adicione o seguinte código

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

AQUI,

  • class Pals extends BaseModel {…} estende o modelo pai BaseModel e torna automaticamente todos os métodos definidos no BaseModel acessados ​​para a classe filha.
  • protegido $ mesa = 'amigos'; define o nome da tabela associada ao nosso modelo pai
  • __construct () {…} inicializa o construtor pai
  • public function get_by_id ($ id) {…} substitui get_by_id para fornecer implementação personalizada específica para o modelo Pals. A consulta para get_by_id usa uma junção para recuperar o nome da cidade da tabela de cidades
  • public function get_all () {…} substitui o método get_all para implementar uma consulta de junção entre a tabela de amigos e cidades

Crie um novo arquivo em application / models / Cities.php


AQUI,

  • protegido $ mesa = 'cidades'; define a tabela do banco de dados modelo.

Como você pode ver no código fornecido acima, a herança nos economiza muito tempo ao trabalhar com modelos no CodeIgniter. Na próxima seção, aprenderemos

Controladores do gerente de contatos

Agora que criamos os modelos, vamos criar os controladores para nossa aplicação. Teremos dois controladores: Contatos e Cidades

Vamos começar com cidades

Crie um novo arquivo Cities.php no diretório application / controllers

Adicione o seguinte código

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

AQUI,

  • O código acima implementa todos os métodos necessários para criar, atualizar, excluir e ler linhas do banco de dados.

Crie outro arquivo Contacts.php no aplicativo / controladores

Adicione o seguinte código

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

Visualizações do gerenciador de contatos

Já vimos os formulários e a validação no CodeIgniter nos tutoriais anteriores. Usaremos o código que desenvolvemos nos tutoriais anteriores. Para fins de integridade, reproduziremos o código que criamos nos tutoriais anteriores.

As visões de nosso aplicativo serão as seguintes

Você pode baixar o código para as visualizações acima clicando no link abaixo

Download de visualizações do gerenciador de contatos do CodeIgniter

Resumo

Neste tutorial, você aprenderá como criar modelos no CodeIgniter. Aproveitamos a herança na programação orientada a objetos para promover a reutilização do código, criando um modelo básico que implementa as quatro principais operações de banco de dados de inserção, leitura, atualização e exclusão.

Demonstramos os conceitos usando um aplicativo prático e continuaremos a fazê-lo nos próximos tutoriais, adicionando mais funcionalidades ao aplicativo.