Прежде всего вам следует избегать повторения вызовов функций.
Первые две строки вашей функции можно заменить на:
$users=$this->User->find('all');
$this->set('users', $users);
Затем вы можете изменить свой объект перед его передачей для просмотра и добавить вычисляемое свойство для этого объекта.
function users(){
$users=$this->User->find('all');
// notice the & here
foreach($users as & $user):
// you are repeating the same line here as well, that's not necessary
$user['User']['custom_field'] = $this->Form->find('count',
array('conditions'=>array('Form.created_by'=>$user['User']['id'])));
endforeach;
$this->set('users', $users);
}
и вы можете использовать его в своем представлении, как любое другое поле, полученное из базы данных. Чтобы улучшить его еще больше, вы можете рассмотреть возможность перемещения этого кода в afterFind
обратный вызов в вашей модели User
, по крайней мере, если эти пользовательские значения используются более одного раза.