Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Collections com DB

Olá!

Nestes exemplos praticos, adicionando e recuperando dados, os dados não estão armazenados!

Como ficaria o uso da DS usando por exemplo dados recuperados do banco de dados PDO::fetchAll(PDO::FETCH_ASSOC) ?

O impacto seria o mesmo por já retornar um array?

Neste cenário usaria o DS para tratar dados e devolver a solicitação com dados formatados?

Obrigado!

1 resposta
solução!

Olá Anderson! Tudo bem?

Ótima pergunta! Quando você está trabalhando com dados recuperados do banco de dados usando PDO::fetchAll(PDO::FETCH_ASSOC), você já está obtendo um array associativo com os resultados. O uso de Collections pode ser muito útil para manipular e formatar esses dados de maneira mais fluida e organizada.

Vamos a um exemplo prático para ilustrar como você pode integrar Collections com dados do banco de dados:

  1. Recuperando dados do banco de dados:

    // Conexão com o banco de dados
    $pdo = new PDO('mysql:host=localhost;dbname=seu_banco', 'usuario', 'senha');
    
    // Executando a consulta
    $stmt = $pdo->query('SELECT * FROM sua_tabela');
    $dados = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
  2. Utilizando uma Collection para manipular os dados: se você estiver usando uma framework como Laravel, pode utilizar a Collection nativa do Laravel. Caso contrário, pode implementar uma Collection personalizada ou usar uma biblioteca como tightenco/collect.

    use Tightenco\Collect\Support\Collection;
    
    // Criando uma Collection a partir dos dados recuperados
    $collection = collect($dados);
    
    // Manipulando os dados na Collection
    $dadosFiltrados = $collection->filter(function ($item) {
        return $item['status'] === 'ativo';
    });
    
    $dadosFormatados = $dadosFiltrados->map(function ($item) {
        return [
            'id' => $item['id'],
            'nome' => strtoupper($item['nome']),
        ];
    });
    
    // Convertendo a Collection de volta para array, se necessário
    $resultadoFinal = $dadosFormatados->toArray();
    
  3. Retornando os dados formatados:

    echo json_encode($resultadoFinal);
    

Neste exemplo, você pode ver que a Collection facilita a filtragem e formatação dos dados. O impacto em termos de desempenho pode ser mínimo, já que a Collection oferece métodos eficientes para manipulação de arrays. Além disso, ela proporciona um código mais legível e fácil de manter.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.