1
resposta

Argumento NULL passado pelo foreach

Quando tento executar codigo 'listar-alunos' recebo um retorno de erro de Uncaught Type, informando que apenas dois valores foram passados e um agurmento null. Comparei o código com o disponibilizado mas não encontrei discrepancia, e não entendo como está sendo passado o argumento nulo se deveria ser passado o nome do aluno. Segue o report do terminal:

Uncaught TypeError: Argument 2 passed to Alura\Pdo\Domain\Model\Student::__construct() must be of the type string, null given, called in [caminho]\lista-alunos.php on line 18 and defined in D:\Codigos\Alura\PHP\PDO\php-pdo-projeto-inicial\src\Domain\Model\Student.php:14
Stack trace:
#0 D:\Codigos\Alura\PHP\PDO\php-pdo-projeto-inicial\lista-alunos.php(18): Alura\Pdo\Domain\Model\Student->__construct(2, NULL, Object(DateTimeImmutable))
#1 {main}

e o código :

$result = $pdo -> query('SELECT * FROM students');
$studentDataList = $result -> fetchAll(PDO::FETCH_ASSOC);
$studentList = [];


foreach ($studentDataList as $studentData){
    $studentList[] = new Student($studentData['id'],
        $studentData['name'],
        new \DateTimeImmutable($studentData['birth_date']));
}

var_dump($studentList);
1 resposta

Olá, Yuri. Dentro do foreach, faça um var_dump em $studentData para ver qual o seu valor. Ou o nome realmente é nulo (não foi inserido corretamente) ou o nome do campo é outro. :-)