$this->request->data['teacher']['user_id'] = $this->User->id;
deveria estar
$this->request->data['Teacher']['user_id'] = $this->User->id;
. "T" maiúsculo. Os nomes dos modelos são sempre CamelCased.
Dito isto, não há necessidade de 2 saves. Você pode simplesmente usar
$this->User->saveAll($this->request->data);
. Ele salvará o registro do usuário e o registro do professor, adicionando o valor de chave estrangeira adequado para o registro do professor (supondo que você tenha configurado a associação adequada entre o modelo de usuário e professor).