$this->request->data['teacher']['user_id'] = $this->User->id;
трябва да бъде
$this->request->data['Teacher']['user_id'] = $this->User->id;
.
Главно "Т". Имената на моделите винаги са CamelCased.
Това каза, че няма нужда от 2 спасявания. Можете просто да използвате
$this->User->saveAll($this->request->data);
.
Той ще запази както потребителския запис, така и записа на учителя, като добави правилна стойност на външен ключ за записа на учителя (ако приемем, че сте настроили правилна връзка между модела на потребителя и учителя).