Boa noite
Quando utilizo $pdo = ConnectionCreator::createConnection() os arquivos que contem SQL não funcionam, me retornam o erro informando que a table students não existe, para testar eu utilizei
$caminhoBanco = __DIR__ . 'banco.sqlite';
$pdo = new PDO('sqlite:' . $caminhoBanco);
e os arquivos que utilizam SQL voltaram a funcionar normalmente
baixei os arquivos da aulas também para testar e a diferença é que utilizando a classe ConnectionCreator::createConnection(); não me retorna nenhum erro, mas me retorna um array vazio
ConnectionCreator.php
<?php
namespace Alura\Pdo\Infrastructure\Persistence;
use PDO;
class ConnectionCreator
{
public static function createConnection(): PDO
{
$databasePath = __DIR__ . '/../../../banco.sqlite';
return new PDO('sqlite:' . $databasePath);
}
}
listar-aluno.php
<?php
use Alura\Pdo\Domain\Model\Student;
use Alura\Pdo\Infrastructure\Persistence\ConnectionCreator;
require_once 'vendor/autoload.php';
$pdo = ConnectionCreator::createConnection();
$stmt = $pdo->query("SELECT * FROM students;");
$studentDataList = $stmt->fetchAll(PDO::FETCH_ASSOC);
$studentList = [];
foreach ($studentDataList as $studentData) {
$studentList[] = new Student(
$studentData['id'],
$studentData['name'],
new \DateTimeImmutable($studentData['birth_date'])
);
}
var_dump($studentList);
Fatal error: Uncaught Error: Call to a member function fetchAll() on bool
E quando utilizo este código me retorna o seguinte erro
<?php
namespace Alura\Pdo\Infrastructure\Persistence;
use PDO;
class ConnectionCreator
{
public static function createConnection(): PDO
{
$databasePath = __DIR__ . '/../../../banco.sqlite';
$connection = new PDO('sqlite:' . $databasePath);
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $connection;
}
}
listar-aluno.php
<?php
use Alura\Pdo\Domain\Model\Student;
use Alura\Pdo\Infrastructure\Persistence\ConnectionCreator;
require_once 'vendor/autoload.php';
$pdo = ConnectionCreator::createConnection();
print_r($pdo);
$stmt = $pdo->query("SELECT * FROM students;");
$studentDataList = $stmt->fetchAll(PDO::FETCH_ASSOC);
$studentList = [];
foreach ($studentDataList as $studentData) {
$studentList[] = new Student(
$studentData['id'],
$studentData['name'],
new \DateTimeImmutable($studentData['birth_date'])
);
}
var_dump($studentList);
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1 no such table: students