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:
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);
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();
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 ✓.