Concatenando campos em um find list no CakePHP 1.3
Esses dias precisei que um select do meu formulário apresenta-se no seu valor, não apenas o valor de um único campo, no caso o ID, queria que o value dos options fica-sem assim “ID – Campo 1 – Campo 2 – Campo 3”. O problema é que cada campo estava em uma tabela diferente. E foi aí que eu conheci um novo recurso do CakePHP 1.3, os campos virtuais (virtualFields).
Primeiro, vá até o Model que você quer criar um campo virtual e adicione o atributo como no exemplo:
public $virtualFields = array(
'ficha' => 'CONCAT("#", Form.id, " ", Work.title, " - ", Service.title, " - ", Provider.title)'
);
Agora no controller você já pode utilizar o find list e chamar o campo virtual que você criou, como no exemplo:
$dados = $this->SeuModel->find('list',
array(
'fields' => array('id', 'ficha'),
'recursive' => 1,
'order' => 'id'
)
);
Pronto, agora você tem o array $dados com uma string com o nome de ficha, que tem os valores concatenados assim: #id – titulo1 – titulo2 – titulo 3
Referência