Tenho um banco de dados com 3 tabelas, nessa estrutura:
emissoras{
id (int)
}
fields{
id (int)
required (int)
published (int)
type (varchar)
name (varchar)
value (text)
label (text)
}
values{
id (int)
emissora_id (int)
field_id (int)
value (text)
}
A tabela emissoras vai guardar apenas um id para servir de base na hora de resgatar um registro.
Esse registro será feito a partir de um formulário, que é gerado conforme os registros na tabela fields. O id é salvo na tabela emissoras e os dados na tabela values, relacionando o valor do campo(field_id) com a emissora(emissora_id)
Agora é que vem a parte complicada. Preciso formatar a forma que o resultado virá.
Preciso pega, em uma única query, um array com este formato:
$items = array(
array(
'fields.name' => 'values.value',
),
array(
'fields.name' => 'values.value',
)
)
Onde o array $item, seria todos os resultados da query e cada um dos arrays dentro dele seriam os registros em sí.
'fields.name' => 'values.value', representa uma lista onde poderiam ter mais de um indice, mas sempre seguindo o mesmo padrão.
Resumindo, o que eu preciso é que minha query retorne uma lista agrupando os valores em 'values' de acordo com os id's em 'emissoras' e que o grupo de valores desta lista, seja, na verdade, outra lista onde a key seria o campo name da tabela fields(fields.name) e o valor, o campo value da tabela values(values.value).
Exemplificando:
Considere as tabelas com os seguintes dados:
// Insere dados na tabela fields
INSERT INTO `fields` (id, name)
VALUES('1', 'nome'),
VALUES('2', 'email'),
VALUES('3', 'telefone'),
VALUES('4', 'endereco')
// Insere dados na tabela emissoras
INSERT INTO `emissoras` (id)
VALUES(1),
VALUES(2),
VALUES(3),
// Insere dados na tabela values
INSERT INTO `values` (id, emissora_id, field_id, value)
Pergunta
vini_loock
Tenho um banco de dados com 3 tabelas, nessa estrutura:
A tabela emissoras vai guardar apenas um id para servir de base na hora de resgatar um registro.Esse registro será feito a partir de um formulário, que é gerado conforme os registros na tabela fields. O id é salvo na tabela emissoras e os dados na tabela values, relacionando o valor do campo(field_id) com a emissora(emissora_id)
Agora é que vem a parte complicada. Preciso formatar a forma que o resultado virá.
Preciso pega, em uma única query, um array com este formato:
Onde o array $item, seria todos os resultados da query e cada um dos arrays dentro dele seriam os registros em sí.
'fields.name' => 'values.value', representa uma lista onde poderiam ter mais de um indice, mas sempre seguindo o mesmo padrão.
Resumindo, o que eu preciso é que minha query retorne uma lista agrupando os valores em 'values' de acordo com os id's em 'emissoras' e que o grupo de valores desta lista, seja, na verdade, outra lista onde a key seria o campo name da tabela fields(fields.name) e o valor, o campo value da tabela values(values.value).
Exemplificando:
Considere as tabelas com os seguintes dados:
Quero um resultado assim: Editado por vini_loockLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.