Ola, Em algumas consultas ao banco, vi o professor usando o FETCH_CLASS ao invés do FETCH_ASSOC. Reparei que o código ficou mais enxuto e tentei reproduzir aqui. Ao fazê-lo, o PHP me retornou o erro de falta de parâmetro para o método construtor da classe Student, o que faz sentido. Tentei encontrar uma forma de declarar estes parâmetros, mas não consegui. Se alguém tiver uma ideia, agradeço. Outra dúvida é sobre o FETCH_CLASS. Ele substitui o foreach que fizemos no módulo de PDO? Ele cria diversas instâncias como o foreach para podermos manipular em nossa aplicação? Segue meu código:
Classe PdoStudentRepository
public function selectId(int $id): Student
{
$statement = $this->connection->prepare("SELECT * FROM students WHERE id = ?;");
$statement->BindValue(1, $id, \PDO::PARAM_INT);
$statement->setFetchMode(\PDO::FETCH_CLASS, Student::class);
$statement->execute();
return $statement->fetch();
}
Classe Student
private ?int $id;
private string $name;
private \DateTime $birthDate;
public function __construct(?int $id, string $name, \DateTime $birthDate)
{
$this->id = $id;
$this->name = $name;
$this->birthDate = $birthDate;
}
Obrigado