ERRO CodeIgniter 4

Estou montando o exemplo da documentação do CodeIgniter 4, porém está dando um erro que não estou entendendo:

Call to a member function getNews() on null

Para deixar claro o que estou codando, meu controller está assim:

<?php

namespace App\Controllers;

use App\Models\NewsModel;
use CodeIgniter\Exceptions\PageNotFoundException;
use CodeIgniter\Controller;

class News extends Controller
{
  public function index()
  {
      $model = model(NewsModel::class);
  
      $data = [
          'news'  => $model->getNews(), // Esta linha que está dando erro
          'title' => 'News archive',
      ];
  
      return view('templates/header', $data)
            . view('news/view')
            . view('templates/footer');
  }  
  public function view($slug)
  {
    $model = model(NewsModel::class);
      
      $data['news'] = $model->getNews($slug);

    if (empty($data['news'])) {
        throw new PageNotFoundException('Cannot find the news item: '. $slug);
    }
    
    $data['title'] = $data['news']['title'];
    
    return view('templates/header', $data)
            . view('news/view')
            . view('templates/footer');
  }
}

E o meu model (que contém o método getNews) está assim:

<?php

namespace App\Models;

use CodeIgniter\Model;

class NewsModel extends Model
{
    protected $table = 'news';

    public function getNews($slug = false)
    {
        if ($slug === false) {
            return $this->findAll();
        }

    return $this->asArray()
            ->where(['slug' => $slug])
            ->first();
    }
}

Por algum motivo ele está dando este erro, mas não sei o que alterar para corrigir, mesmo porque estou fazendo de acordo e direto da documentação.

página da documentação

Cara, falando o óbvio, mas o retorno do getNews() está nulo. Já tentou debugar?

Acredito que de alguma forma estava dando erro na minha conexão com o meu postgres local. Rodei numa máquina docker e nela funcionou normal. Depois tive uns errors com variáveis, mas consegui resolver tudo. Obrigado!

1 curtida

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.