Exibir colunas concatenadas em um combobox, usando o cakePHP
31, março, 2009
Estou desenvolvendo uma aplicação no cakePHP, onde me deparei com a necessidade de exibir duas colunas do banco de dados concatenadas dentro de um único combobox (ou selectbox se preferirem).
Resolvi da seguinte forma:
$categorias = $this->Categoria->find('all', array( 'fields' => array( 'Categoria.id', 'CONCAT(Categoria.id,\' -\',Categoria.nome) as nome'), 'recursive' => 1)); $newCategs = Set::combine($categorias, '{n}.Categoria.id', '{n}.0.nome'); $this->set('categs', $newCategs);
Como podem ver, apenas utilizei a função CONCAT nativa do próprio banco, como um valor do parâmetro fields do método find(’all). Após isso, passei o resultado como parâmetro da função Set::combine do cake para que meu array fosse reestruturado de forma que fosse mostrado no combo de forma correta.
Após realizar a consulta, utilizei o form helper na minha view para exibir o combobox:
echo $form->select('categoria_id',$categs);
Espero que isto possa ajudar.
Abraços