1
resposta

Dados do banco retornando Null

Boa a todos, tenho uma aplicação em PHP, e nela estou tentando recuperar os dados de uma tabela. O problema é que o dados estão retornando nulo. O banco está funcionando normalmente, tando que estou conseguindo cadastrar normalmente.

Esse é o meu Model:

<?php

namespace App\Models;

use MVC\Model\Model;

class Formations extends Model
{

    private $id;
    private $curso;
    private $dataInicio;
    private $dataConclusao;
    private $instituicao;
    private $localidade;

    public function __get($attr)
    {
        return $this->$attr;
    }

    public function __set($attr, $value)
    {
        $this->$attr = $value;
    }

    // Recuperar todos os usuários
    public function showAll()
    {
        $q = "select * from formations";
        $stmt = $this->db->prepare($q);
        $stmt->execute();
        $stmt->fetchAll();
        return $this;
    }

    // Salvar no Banco
    public function store()
    {
        $q = "insert into formations (curso, dataInicio, dataConclusao, instituicao, localidade) values (:curso, :dataInicio, :dataConclusao, :instituicao, :localidade)";
        $stmt = $this->db->prepare($q);
        $stmt->bindValue(':curso', $this->__get('curso'));
        $stmt->bindValue(':dataInicio', $this->__get('dataInicio'));
        $stmt->bindValue(':dataConclusao', $this->__get('dataConclusao'));
        $stmt->bindValue(':instituicao', $this->__get('instituicao'));
        $stmt->bindValue(':localidade', $this->__get('localidade'));
        $stmt->execute();

        return $this;
    }

}

e ao dar um var_dump no controller, o retorno é esse: Retorno no browser

o que eu reparei, é que mesmo usando o fetchAll(), não está retornando um array e sim um objeto.

agradeço desde já.

1 resposta

Olá, Lucas!

Ao invés de utilizar o método fetchAll(), que retorna um array com todos os resultados da query, você está apenas chamando o método sem atribuir o resultado a uma variável.

Para resolver esse problema, você pode atribuir o resultado da execução da query a uma variável e retorná-la. Por exemplo:

public function showAll()
{
    $q = "select * from formations";
    $stmt = $this->db->prepare($q);
    $stmt->execute();
    $result = $stmt->fetchAll();
    return $result;
}

Dessa forma, o método showAll() irá retornar um array com os dados da tabela formations.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓