在 CodeIgniter 4 (以下簡稱 CI4)裡要存取資料庫建議也是使用其 Model 來操作,CI4 只要設定好環境的資料庫連結資訊就可以直接在 Model 連結資料庫,所以要存取資料庫的話先打開 .env 的檔案並及以下內容改成你的環境設定:

database.default.hostname = localhost
database.default.database = ci4tutorial
database.default.username = root
database.default.password = root
database.default.DBDriver = MySQLi

 

設定模型

在 MVC 的架構之下我們應該把資料庫存取都在 Model 內處理掉,接下來在 app/Models 資料夾下建立一個 Model,我這邊用 NewsModel.php,並把內容設定如下:

namespace App\Models;
use CodeIgniter\Model;

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

 

$table 是設定這個 model 要使用的表格是哪個,接著設定讀取資料表的方法:

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

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

Controller 內的讀取方式

Model 建立好後,就可以在 Controller 就設定好的方法去讀取,用一個 app/Controllers/News.php 這個 controller 來說明:

namespace App\Controllers;

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

class News extends Controller
{
    public function index()
    {
        $model = model(NewsModel::class);

        $data['news'] = $model->getNews();
        return view('home', $data);
    }

    public function view($id = null)
    {
        $model = model(NewsModel::class);

        $data['news'] = $model->getNews($id);
        return view('news', $data);
    }
}

如此就可以依據不同的網址去讀取 Model 內不同的內容了。