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