$this->request->data['teacher']['user_id'] = $this->User->id;
bör vara
$this->request->data['Teacher']['user_id'] = $this->User->id; .
Stort "T". Modellnamn är alltid CamelCased.
Som sagt, det behövs inte 2 räddningar. Du kan bara använda
$this->User->saveAll($this->request->data); .
Den sparar både användarposten och lärarposten och lägger till rätt utländsk nyckelvärde för lärarposten (förutsatt att du har ställt in korrekt koppling mellan användar- och lärarmodellen).