iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
Modern Web

從基礎學習 ThinkPHP系列 第 11

Day11-從基礎學習 ThinkPHP-Model

  • 分享至 

  • xImage
  •  

前言

這一章節會稍微短一點,主要是介紹基礎的 Model 定義,但是在一般開發下是不太會針對 Model 做太多的設置,所以你會發現這一章節真的比較沒有什麼。

起手式

首先 Model 定義的方式很簡單,但是在那之前我們必須先建立 Model 資料夾,因為預設 ThinkPHP 並沒有提供 Model 資料夾,所以我們在 about 底下建立一個 model 資料夾,並新增一個檔案叫做 about.php ↓

about

那 Model 定義的方式只需要這樣子即可:

<?php
namespace app\about\model;

use think\Model;

class about extends Model
{
}

裡面最需要注意的地方只有這一段程式碼 use think\Model;,這一段是在告知 ThinkPHP 我們要使用 Model 的核心庫,如果你缺少這一行就會無法正常運行唷。

好,恭喜你,你已經完成基礎的 Model 定義了(?!),但是僅僅定義 Model 是不夠的,畢竟 Model 會操控 DB,所以下來我們要來設置資料庫。

連接資料庫

當我們準備好上面動作後,就要來做一下連接資料庫動作,否則 Model 是無法做任何操作 DB 的。

資料庫設置的檔案位於 project/config 底下的 database.php,只需要將相關欄位填入即可 ↓

database

基本上只需要填入 hostnameusernamepassword 就可以了,那麼依照我的 MySQL 設置,就會這樣填入 ↓

MySQL

只是有一個地方我有另外填入,也就是 prefix,因為我建立的資料庫是有前綴的,所以才會填入 think_

接下來我們要先來新增一張資料表(後面章節會使用到),SQL 指令我就直接給各位囉~

CREATE TABLE think_user (
  id int(10) NOT NULL auto_increment,
  name varchar(5) NOT NULL default '',
  weight int(5) NOT NULL default 0,
  height float(5) NOT NULL default 0,
  PRIMARY KEY (id)
) AUTO_INCREMENT=1;

你可以發現我資料表也會加上前綴,而這等一下會幫助我們後面的操作,最主要是因為我在前面設置 database.php 時,有填入 prefix => 'think_',那麼資料庫在建立上就都必須加上前綴,否則 ThinkPHP 找不到唷。

模型指定資料表

接下來由於我在 database.php 有設置資料庫 & 表的前綴 think_,所以我們接下來再指定資料表的時候必須這樣寫 ↓

<?php
namespace app\about\model;

use think\Model;

class about extends Model
{
  protected $table = 'think_user';
}

當然你也可以簡寫,ThinkPHP 會幫你帶上 think_,只是我個人習慣寫完整一點:

protected $table = 'think_user';

另外如果你希望這個 Model 會連接不同的資料庫也是可以,只需要這樣寫入設定覆蓋原本的就可以了:

<?php
namespace app\about\model;

use think\Model;

class about extends Model
{
  protected $connection = [
    // 資料庫類型
    'type' => 'mysql',
    // 資料庫 IP
    'hostname' => '127.0.0.1',
    // 資料庫名稱
    'database' => 'test',
    // 使用者名稱
    'username' => 'root',
    // 密碼
    'password' => '',
    // 資料庫端口
    'hostport' => '',
    // 參數
    'params' => [],
    // 編碼
    'charset' => 'utf8',
    // 前缀
    'prefix' => 'think_',
    // Debug 模式
    'debug' => true,
    ];
}

結尾

這邊這樣講下來,其實非常的模糊的,所以後面章節會慢慢在搭配 Controller+Model 的操作來加深觀念。

本文同步發表於:https://hsiangfeng.github.io/php/20190912/1469012740/


上一篇
Day10-從基礎學習 ThinkPHP-View
下一篇
Day12-從基礎學習 ThinkPHP-Route
系列文
從基礎學習 ThinkPHP31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言