
Processando múltiplos registros no banco de dados com Query Builder no CodeIgniter
29/11/2019Processar um registro de cada vez na criação e edição de dados é a operação mais comum em aplicações que utilizam banco de dados, porém, em alguns casos há a necessidade de processar múltiplos registros, e fazer um loop nesse conjunto de registros e então executar a operação de insert ou update, por exemplo para cada um além de ser bem chato, influencia na paerformance da aplicação.
No CodeIgniter é possível fazer o processamento de múltiplos registros tanto para insert quanto para update usando recursos nativos do Query Builder de forma simples e rápida, e é isso que você aprenderá a seguir.
Inserindo múltiplos registros no banco de dados com insert_batch()
O método insert_batch()
é capaz de gerar uma instrução SQL com base nos dados passados como parâmetro e executar a inserção dos dados no banco de uma só vez.
Imagine que você tem o array a seguir com os dados que precisam ser inseridos no banco:
$posts = array(
array(
'titulo' => 'Post #1',
'autor' => 'Jonathan Lamim',
'data' => '2019-11-29 07:30:00'
),
array(
'titulo' => 'Post #2',
'autor' => 'Jonathan Lamim',
'data' => '2019-11-29 08:00:00'
),
array(
'titulo' => 'Post #3',
'autor' => 'Jonathan Lamim',
'data' => '2019-11-29 08:30:00'
)
);
Usando o método insert()
, mas comum e utilizado, você precisará executar um loop nesse array e chamar o método insert()
para cada iteração.
foreach($posts as $post){
$this->db->insert('tbl_posts', $post);
}
Já com o método insert_batch()
você não precisa do loop, basta passar o array com os dados a serem inseridos como segundo parâmetro que ele executa todo o processamento.
$this->db->insert_batch('tbl_posts', $posts);
O primeiro parâmetro é o nome da tabela onde os dados serão inseridos, e o segundo parâmetro pode ser tanto um
array
quanto umobject
.
Atualizando múltiplos registros no banco de dados com update_batch()
O método update_batch()
é capaz de gerar uma instrução SQL com base nos dados passados como parâmetro e executar a atualização desses dados no banco de uma só vez.
Imagine que você tem o array a seguir que foi gerado a partir de uma consulta no banco de dados:
$posts = array(
array(
'id' => 1,
'titulo' => 'Post #1',
'autor' => 'Jonathan Lamim',
'data' => '2019-11-29 07:30:00'
),
array(
'id' => 2,
'titulo' => 'Post #2',
'autor' => 'Jonathan Lamim',
'data' => '2019-11-29 08:00:00'
),
array(
'id' => 3,
'titulo' => 'Post #3',
'autor' => 'Jonathan Lamim',
'data' => '2019-11-29 08:30:00'
)
);
Usando o método update()
, mas comum e utilizado, você precisará executar um loop nesse array e chamar o método update()
para cada iteração.
foreach($posts as $post){
$this->db->where('id', $post['id']);
$this->db->update('tbl_posts', $post);
}
Já com o método update_batch()
você não precisa do loop, basta passar o array com os dados a serem atualizados como segundo parâmetro e como terceiro parâmetro a coluna da tabela que corresponde ao valor único de cada registro, o ID em muitos casos, que ele executa todo o processamento.
$this->db->update_batch('tbl_posts', $posts, 'id');
O primeiro parâmetro é o nome da tabela onde os dados serão inseridos, e o segundo parâmetro pode ser tanto um
array
quanto umobject
e o terceiro parâmetro é a coluna da tabela que corresponde ao valor único de cada registro, o ID em muitos casos.
Lembre-se que para utilizar o Query Builder e ter acesso aos métodos que permitem processar múltiplos registros é preciso realizar as configurações de conexão com banco de dados e carregamento da biblioteca database
em application/config/autoload.php
.
Viu como é fácil processar múltiplos registros no CodeIgniter e otimizar tanto o processo de desenvolvimento quanto a performance da aplicação?
Se você gostou desse tutorial, compartilhe para que outras pessoas também possam ter acesso e deixe seu feedback nos comentários.