Oi pessoal,
Alguém teve algum problema na hora de exibir a imagem inserida no banco de dados? Consultei no banco e o nome do arquivo aparece salvo e, na pasta uploads
Tentei depurar pra ver o resultado obtido mas não consegui resolver
O erro apresentado em tela
Controller
$user = new Users($name, $username, $category); // cria um usuário para ser inserido
if ($_FILES['image']['error'] === UPLOAD_ERR_OK) { // com a variável global FILES verifica se não há erros
move_uploaded_file( // move um arquivo do diretório tmp do php para a pasta
$_FILES['image']['tmp_name'],
__DIR__ . './../../public/img/uploads/' . $_FILES['image']['name']
);
$user->setFilePath($_FILES['image']['name']); // define um nome para o arquivo
}
Repository
public function add(Users $user): bool
{
$sql = 'INSERT INTO users (name, username, category, image_path) VALUES (?, ?, ?, ?)';
$statement = $this->pdo->prepare($sql);
$statement->bindValue(1, $user->name);
$statement->bindValue(2, $user->username);
$statement->bindValue(3, $user->category);
$statement->bindValue(4, $user->getFilePath());
$result = $statement->execute();
$id = $this->pdo->lastInsertId();
$user->setId(intval($id));
return $result;
}
public function update(Users $user): bool
{
$updateImageSql = '';
if ($user->getFilePath() !== null) {
$updateImageSql = ', image_path = :image_path';
}
$sql = "UPDATE users SET name = :name, username = :username, category = :category $updateImageSql WHERE id = :id";
$statement = $this->pdo->prepare($sql);
$statement->bindValue(':name', $user->name);
$statement->bindValue(':username', $user->username);
$statement->bindValue(':category', $user->category);
$statement->bindValue(':id', $user->id, PDO::PARAM_INT);
if ($user->getFilePath() !== null) {
$statement->bindValue(':image_path', $user->getFilePath());
}
return $statement->execute();
}
private function hydrate(array $userData): Users
{
$user = new Users($userData['name'], $userData['username'], $userData['category']);
$user->setId($userData['id']);
if ($user['image_path'] !== null) { // a linha 90 aponta aqui
$user->setFilePath($user['image_path']);
}
return $user;
}