No método de insert(), de que adiantaria definirmos o ID depois que já inserimos no banco com o execute()?
Esse objeto de Student vai ser descartado logo após o execute() não? Fiquei meio perdido nessa..
private function insert($student): bool
{
$sqlInsert = 'INSERT INTO students (name, birth_date) VALUES (:name, :birth_date);';
$stmt = $this->connection->prepare($sqlInsert);
$success = $stmt->execute([
':name' => $student->name(),
':birth_date' => $student->birth_date()->format('Y-m-d')
]);
if ($success) {
$student->defineId($this->connection->lastInsertId());
}
return $success;
}