Codeigniter Active Record: Inserir, Selecionar, Atualizar, Excluir

Índice:

Anonim

Os dados são a linhagem da maioria dos aplicativos. Os dados precisam ser armazenados de forma que possam ser analisados ​​posteriormente para fornecer insights e facilitar as decisões de negócios. Os dados geralmente são armazenados no banco de dados. Entre as principais preocupações ao interagir com o banco de dados estão a segurança, a facilidade de acesso e as implementações específicas do fornecedor do banco de dados de Structured Query Language (SQL).

Active record é um design pattern que facilita a interação com o banco de dados de forma fácil, segura e eloquente.

O registro ativo tem as seguintes vantagens

  • Insira, atualize e exclua registros com cadeias de métodos simples de registro ativo
  • Envia a entrada do usuário de maneira segura usando parâmetros
  • Permite que você trabalhe com vários mecanismos de banco de dados, como MySQL, SQL Server, etc., sem reescrever o código do aplicativo
  • O CodeIgniter usa drivers específicos para cada mecanismo de banco de dados em segundo plano.

Neste tutorial, você aprenderá:

  • Como usar o Active Record: Exemplo
  • Configuração do banco de dados CodeIgniter
  • CodeIgniter Inserir Registro Ativo
  • CodeIgniter Selecione Active Record
  • CodeIgniter Update Active Record
  • CodeIgniter Excluir Registro Ativo

Como usar o Active Record: Exemplo

Neste tutorial, discutiremos o banco de dados do tutorial. Teremos duas mesas, uma com pedidos e outra com detalhes.

Este tutorial presume que você tenha o banco de dados MySQL instalado e funcionando.

Execute os seguintes scripts para criar o banco de dados do tutorial:

CREATE SCHEMA ci_active_record;USE ci_active_record;CREATE TABLE `order_details` (`id` int(11) NOT NULL AUTO_INCREMENT,`order_id` int(11) DEFAULT NULL,`item` varchar(245) DEFAULT NULL,`quantity` int(11) DEFAULT '0',`price` decimal(10,2) DEFAULT '0.00',`sub_total` decimal(10,2) DEFAULT '0.00',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1;CREATE TABLE `orders` (`id` int(11) NOT NULL AUTO_INCREMENT,`date` timestamp NULL DEFAULT NULL,`customer_name` varchar(245) DEFAULT NULL,`customer_address` varchar(245) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT = 1;

O código acima cria um banco de dados denominado ci_active_record e cria duas tabelas, a saber, orders e order_details. O relacionamento entre as duas tabelas é definido pelo id da coluna em pedidos e order_id na tabela order_details.

Configuração do banco de dados CodeIgniter

Agora iremos configurar nosso aplicativo para poder se comunicar com este banco de dados.

Abra o arquivo de configuração do banco de dados localizado em application / config / database.php

localize as seguintes linhas no arquivo de configuração

'hostname' => 'localhost','username' => '','password' => '','database' => '',

Atualize o código acima para o seguinte

'hostname' => 'localhost','username' => 'root','password' => 'letmein','database' => 'ci_active_record',

Observação: você precisará substituir o nome de usuário e a senha por aqueles que correspondem à sua configuração do MySQL.

Além dos detalhes de configuração do banco de dados, também precisamos dizer ao CodeIgniter para carregar a biblioteca do banco de dados quando carrega

Etapa 1) Abra o seguinte arquivo application / config / autoload.php

Etapa 2) Localize as bibliotecas de chaves de array $ autoload e carregue a biblioteca de banco de dados conforme mostrado abaixo

$autoload['libraries'] = array('database');

AQUI,

  • O código acima carrega a biblioteca de banco de dados quando o aplicativo é iniciado

CodeIgniter Inserir Registro Ativo

Para fins de teste, vamos criar um controlador e rotas definidas que usaremos para interagir com nossa aplicação via registro ativo.

Crie um novo arquivo application / controllers / ActiveRecordController.php

Adicione o seguinte código a ActiveRecordController.php

 '2018-12-19','customer_name' => 'Joe Thomas','customer_address' => 'US'];$this->db->insert('orders', $data);echo 'order has successfully been created';}}

AQUI,

  • $ data = […] define uma variável de array de dados que usa nomes de tabelas de banco de dados como chaves de array e atribui valores a eles
  • $ this-> db-> insert ('pedidos', $ dados); chama o método de inserção da biblioteca do banco de dados, passa as ordens de nome da tabela e a variável de array $ data como o parâmetro. Esta linha gera a instrução SQL INSERT usando as chaves da matriz como os nomes dos campos e os valores da matriz como os valores a serem inseridos no banco de dados.

Agora que criamos com sucesso o método do controlador para o registro ativo, agora precisaremos criar uma rota que chamaremos para executar o método do controlador.

Agora abra routes.php em application / config / routes.php

adicione a seguinte linha às rotas

$route['ar/insert'] = 'activerecordcontroller/store_order';

AQUI,

  • Definimos uma rota ar / insert que chama o store_order do ActiveRecordController.

Vamos agora iniciar o servidor web para testar nosso método.

Execute o seguinte comando para iniciar o servidor embutido para PHP

cd C:\Sites\ci-appphp -S localhost:3000

AQUI,

  • O comando acima acessa a linha de comando e inicia o servidor embutido na porta 3000

Carregue o seguinte URL em seu navegador

http: // localhost: 3000 / ar / insert

Você obterá os seguintes resultados

order has successfully been created

Abra o banco de dados do tutorial do MySQL e verifique a tabela de pedidos

Você será capaz de criar uma nova linha conforme mostrado na imagem abaixo

CodeIgniter Selecione Active Record

Nesta seção, veremos como ler os registros que temos no banco de dados e exibi-los no navegador da web como uma lista não ordenada

Adicione o seguinte método ao ActiveRecordController

public function index() {$query = $this->db->get('orders');echo "

Orders Listing

";echo "
    ";foreach ($query->result() as $row) {echo "
  • $row->customer_name
  • ";}echo "
";}

AQUI,

  • $ query = $ this-> db-> get ('pedidos'); executa a consulta de seleção na tabela de pedidos, selecionando todos os campos
  • echo "

    Listagem de pedidos

    "; exibe um cabeçalho HTML de tamanho 3
  • echo "
      "; imprime a marca de abertura para a lista HTML não ordenada
    • foreach ($ query-> result () as $ row) {…} usou o loop for para percorrer os resultados retornados do banco de dados. echo "
    • $ row-> customer_name
    • "; imprime o customer_name do banco de dados

    Antes de carregar o seguinte URL, você pode carregar mais alguns registros no banco de dados.

    Vamos agora definir uma rota para a consulta SELECT

    Abra a tabela application / config / routes.php

    Adicione a seguinte rota

    $route['ar'] = 'activerecordcontroller';

    AQUI,

    • A rota ar aponta para o método de índice da classe ActiveRecordController. Por padrão, é por isso que não especificamos o método de índice como você fez para a rota que insere registros

    Supondo que o servidor da web já esteja em execução, carregue o seguinte URL

    http: // localhost: 3000 / ar

    Você deve ser capaz de ver os resultados que são muito semelhantes aos seguintes em seu navegador da web

    CodeIgniter Update Active Record

    Nesta seção, explicaremos como usar o registro ativo para atualizar o banco de dados. Digamos que desejamos atualizar o nome do cliente Joe Thomas para Joe.

    Adicione o seguinte método à classe ActiveRecordController

    public function update_order() {$data = ['customer_name' => 'Joe',];$this->db->where('id', 1);$this->db->update('orders', $data);echo 'order has successfully been updated';}

    AQUI,

    • $ data = […] define os campos e valores que desejamos atualizar na tabela do banco de dados
    • $ this-> db-> where ('id', 1); define a cláusula where da consulta de atualização
    • $ this-> db-> update ('pedidos', $ dados); gera a consulta de atualização SQL e a executa em nosso banco de dados.

    O código acima irá produzir a seguinte instrução SQL

    UPDATE orders SET customer_name = 'Joe' WHERE id = 1;

    Vamos agora atualizar o aplicativo routes.php / config / routes.php

    Adicione a seguinte rota

    $route['ar/update'] = 'activerecordcontroller/update_order';

    Salve as alterações

    Carregue o seguinte URL no navegador da web

    Vamos agora exibir os registros do banco de dados e ver se as alterações foram afetadas.

    Como você pode ver na imagem fornecida acima, o primeiro registro foi atualizado de Joe Thomas para Joe.

    CodeIgniter Excluir Registro Ativo

    Agora vamos deletar um registro do banco de dados. Excluiremos o registro com id 3.

    Adicione o seguinte método ao ActiveRecordController

    public function delete_order() {$this->db->where('id', 3);$this->db->delete('orders');echo 'order has successfully been deleted';}

    AQUI,

    • $ this-> db-> where ('id', 1); define a cláusula where
    • $ this-> db-> delete ('pedidos'); exclui a linha do banco de dados na tabela de pedidos com base nos critérios definidos usando a cláusula where.

    Para executar o código acima, carregue a seguinte URL em nosso navegador da web

    http: // localhost: 3000 / ar / delete

    Resumo

    Neste tutorial, você aprendeu como trabalhar com um registro ativo para inserir, atualizar, excluir e selecionar registros do banco de dados. Trabalhamos com valores estáticos para criar registros, atualizar e excluir. No próximo tutorial, criaremos uma interface de usuário que o usuário pode usar para criar registros dinamicamente no banco de dados.