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.