定義

版本 調(diào)整功能
5.0.5 model或者Loader::model方法支持傳入完整的模型類名

模型定義

定義一個User模型類:

namespace app\index\model;

use think\Model;

class User extends Model
{
}

默認主鍵為自動識別,如果需要指定,可以設置屬性:

namespace app\index\model;

use think\Model;

class User extends Model
{
    protected $pk = 'uid';
}

模型會自動對應數(shù)據(jù)表,模型類的命名規(guī)則是除去表前綴的數(shù)據(jù)表名稱,采用駝峰法命名,并且首字母大寫,例如:

模型名 約定對應數(shù)據(jù)表(假設數(shù)據(jù)庫的前綴定義是 think_)
User think_user
UserType think_user_type

如果你的規(guī)則和上面的系統(tǒng)約定不符合,那么需要設置Model類的數(shù)據(jù)表名稱屬性,以確保能夠找到對應的數(shù)據(jù)表。

設置數(shù)據(jù)表

如果你想指定數(shù)據(jù)表甚至數(shù)據(jù)庫連接的話,可以使用:

namespace app\index\model;

class User extends \think\Model
{
    // 設置當前模型對應的完整數(shù)據(jù)表名稱
    protected $table = 'think_user';
    
    // 設置當前模型的數(shù)據(jù)庫連接
    protected $connection = [
        // 數(shù)據(jù)庫類型
        'type'        => 'mysql',
        // 服務器地址
        'hostname'    => '127.0.0.1',
        // 數(shù)據(jù)庫名
        'database'    => 'thinkphp',
        // 數(shù)據(jù)庫用戶名
        'username'    => 'root',
        // 數(shù)據(jù)庫密碼
        'password'    => '',
        // 數(shù)據(jù)庫編碼默認采用utf8
        'charset'     => 'utf8',
        // 數(shù)據(jù)庫表前綴
        'prefix'      => 'think_',
        // 數(shù)據(jù)庫調(diào)試模式
        'debug'       => false,
    ];
}

和連接數(shù)據(jù)庫的參數(shù)一樣,connection屬性的值也可以設置為數(shù)據(jù)庫的配置參數(shù),而且也是官方推薦的方式,這樣可以避免把數(shù)據(jù)庫連接固化在代碼里面。

5.0不支持單獨設置當前模型的數(shù)據(jù)表前綴。

模型調(diào)用

模型類可以使用靜態(tài)調(diào)用或者實例化調(diào)用兩種方式,例如:

// 靜態(tài)調(diào)用
$user = User::get(1);
$user->name = 'thinkphp';
$user->save();

// 實例化模型
$user = new User;
$user->name= 'thinkphp';
$user->save();

// 使用 Loader 類實例化(單例)
$user = Loader::model('User');

// 或者使用助手函數(shù)`model`
$user = model('User');
$user->name= 'thinkphp';
$user->save();

實例化模型類主要用于調(diào)用模型的自定義方法,更多用法參考后面的章節(jié)內(nèi)容。

文檔最后更新時間:2018-04-26 10:03:07

文檔
目錄

深色
模式

切換
寬度