在 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 內不同的內容了。