Como dados de saída de tabelas com nomes de coluna mesmos em CodeIgniter?
-
06-07-2019 - |
Pergunta
Esta é a minha consulta:
$query = $this->db->query('
SELECT archives.id, archives.signature, type_of_source.description, media_type.description, origin.description
FROM archives, type_of_source, media_type, origin
WHERE archives.type_of_source_id = type_of_source.id
AND type_of_source.media_type_id = media_type.id
AND archives.origin_id = origin.id
ORDER BY archives.id ASC
');
Mas como saída o resultado? Isso funciona, mas só recebe a última descrição (origin.description):
foreach ($query->result_array() as $row)
{
echo $row['description'];
}
Isso não funciona:
foreach ($query->result_array() as $row)
{
echo $row['type_of_source.description'];
}
Ou eu deveria mudar o nome das colunas (por exemplo type_of_source_description)?
Solução
Isso realmente tem muito pouco a ver com CodeIgniter e muito com a forma como mysql_fetch_assoc fornece os resultados da consulta. A solução é que você deve renomear as colunas dentro da consulta usando "AS", por exemplo.
select type_of_source.description as type_of_source_description, origin.descripotion as origin_descripotion from ....
Outras dicas
Apenas apelido as colunas na instrução SELECT. Não modifique o seu banco de dados. A prática padrão é usar aliasing em suas instruções SQL.
De docs do PostgreSQL para "SELECT":
"Usando a cláusula AS nome_de_saída, outro nome pode ser especificado para uma coluna de saída."
Eu recomendo não usar dessa forma, em vez disso você pode renomear colunas de saída com "AS".