Когда вы загружаете свои рестораны, вы на самом деле получаете такой массив
array (
ID => NAME,
ID => NAME
)
По сути, это связанный массив с идентификатором в качестве ключа и полем отображения в качестве значения. Поэтому, пока вы изменяете этот массив с помощью операции find
или с помощью обычной итерации массива PHP, вы можете достичь своей цели.
EDIT
Таким образом, ваш ответ CakePHP VirtualFields
В вашей модели вы определяете это как
var $virtualFields = array(
'rest_unique_name' => 'CONCAT(Restaurant.first_name, " ", Restaurant.address)'
);
В вашем контроллере вы делаете это
$opts = array(
'fields' => array('id', 'rest_unique_name')
);
$restaurants = $this->Restaurant->find('list', $opts);