Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Definir o id da model student após o execute()

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;
    }
1 resposta
solução!

Fala Guilherme, beleza?

Caso o Student tenha sido salvo com sucesso ele tem agora uma identificação em sua aplicação, por isso que após salvar ele no banco é recuperado o seu ID.

Objetos são trabalhados através de referências e já que o Student passa ter um ID faz todo sentido recuperar seu ID salvo no banco e defini-lo. Caso você precise atualizar o mesmo objeto a sua aplicação saberá o seu identificador.