Boa noite!
Tenho o mesmo problema do POST "Após executar o INSERT, o id está NULL" do camarada Edson que já foi resolvido, porém, mesmo realizando as orientações do professor ao longo da resolução, no meu caso continua vindo ID nulo.
Segue o código...
arquivo "banco.sqlite.php"
<?php
$caminhoAbsoluto = __DIR__ . '/banco.sqlite';
//PDO eh uma interface para acessar diversos bancos de dados
// através do driver correspondente (dsn) e sua documentação
$pdo = new PDO( 'sqlite:' . $caminhoAbsoluto);
$pdo->exec('CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, birth_date TEXT);');
arquivo "inserir-aluno.php"
<?php
use Alura\PDO\Domain\Model\Student;
require_once 'vendor/autoload.php';
$caminhoAbsoluto = __DIR__ . '/banco.sqlite';
$pdo = new PDO( 'sqlite:' . $caminhoAbsoluto);
$student = new Student(null, 'Thiago Freitas', new \DateTimeImmutable('1983-07-27'));
$sqlInsert = "INSERT INTO students (name, birth_date)
VALUES ('{$student->name()}', '{$student->birthDate()->format('Y-m-d')}');";
$pdo->exec($sqlInsert);
arquivo "lista-alunos.php"
<?php
require_once 'vendor/autoload.php';
$caminhoAbsoluto = __DIR__ . '/banco.sqlite';
$pdo = new PDO( 'sqlite:' . $caminhoAbsoluto);
//metodo query retorna um array com o resultado da consulta
$stmt = $pdo->query('SELECT * FROM students;');
var_dump($stmt->fetch());
É isso aí...