Processando múltiplos registros no banco de dados com Query Builder no CodeIgniter

Processando múltiplos registros no banco de dados com Query Builder no CodeIgniter

29/11/2019 3 Por Jonathan Lamim

Processar 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 um object.

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 um object 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.