定義
版本 | 調(diào)整功能 |
---|---|
5.0.5 |
model 或者Loader::model 方法支持傳入完整的模型類(lèi)名 |
模型定義
定義一個(gè)User模型類(lèi):
namespace app\index\model;
use think\Model;
class User extends Model
{
}
默認(rèn)主鍵為自動(dòng)識(shí)別,如果需要指定,可以設(shè)置屬性:
namespace app\index\model;
use think\Model;
class User extends Model
{
protected $pk = 'uid';
}
模型會(huì)自動(dòng)對(duì)應(yīng)數(shù)據(jù)表,模型類(lèi)的命名規(guī)則是除去表前綴的數(shù)據(jù)表名稱(chēng),采用駝峰法命名,并且首字母大寫(xiě),例如:
模型名 | 約定對(duì)應(yīng)數(shù)據(jù)表(假設(shè)數(shù)據(jù)庫(kù)的前綴定義是 think_) |
---|---|
User | think_user |
UserType | think_user_type |
如果你的規(guī)則和上面的系統(tǒng)約定不符合,那么需要設(shè)置Model類(lèi)的數(shù)據(jù)表名稱(chēng)屬性,以確保能夠找到對(duì)應(yīng)的數(shù)據(jù)表。
設(shè)置數(shù)據(jù)表
如果你想指定數(shù)據(jù)表甚至數(shù)據(jù)庫(kù)連接的話,可以使用:
namespace app\index\model;
class User extends \think\Model
{
// 設(shè)置當(dāng)前模型對(duì)應(yīng)的完整數(shù)據(jù)表名稱(chēng)
protected $table = 'think_user';
// 設(shè)置當(dāng)前模型的數(shù)據(jù)庫(kù)連接
protected $connection = [
// 數(shù)據(jù)庫(kù)類(lèi)型
'type' => 'mysql',
// 服務(wù)器地址
'hostname' => '127.0.0.1',
// 數(shù)據(jù)庫(kù)名
'database' => 'thinkphp',
// 數(shù)據(jù)庫(kù)用戶(hù)名
'username' => 'root',
// 數(shù)據(jù)庫(kù)密碼
'password' => '',
// 數(shù)據(jù)庫(kù)編碼默認(rèn)采用utf8
'charset' => 'utf8',
// 數(shù)據(jù)庫(kù)表前綴
'prefix' => 'think_',
// 數(shù)據(jù)庫(kù)調(diào)試模式
'debug' => false,
];
}
和連接數(shù)據(jù)庫(kù)的參數(shù)一樣,connection
屬性的值也可以設(shè)置為數(shù)據(jù)庫(kù)的配置參數(shù),而且也是官方推薦的方式,這樣可以避免把數(shù)據(jù)庫(kù)連接固化在代碼里面。
5.0不支持單獨(dú)設(shè)置當(dāng)前模型的數(shù)據(jù)表前綴。
模型調(diào)用
模型類(lèi)可以使用靜態(tài)調(diào)用或者實(shí)例化調(diào)用兩種方式,例如:
// 靜態(tài)調(diào)用
$user = User::get(1);
$user->name = 'thinkphp';
$user->save();
// 實(shí)例化模型
$user = new User;
$user->name= 'thinkphp';
$user->save();
// 使用 Loader 類(lèi)實(shí)例化(單例)
$user = Loader::model('User');
// 或者使用助手函數(shù)`model`
$user = model('User');
$user->name= 'thinkphp';
$user->save();
實(shí)例化模型類(lèi)主要用于調(diào)用模型的自定義方法,更多用法參考后面的章節(jié)內(nèi)容。
文檔最后更新時(shí)間:2018-04-26 10:03:07
模型初始化 →
未解決你的問(wèn)題?請(qǐng)到「問(wèn)答社區(qū)」反饋你遇到的問(wèn)題