定義
| 版本 | 調整功能 |
|---|---|
| 5.0.5 |
model或者Loader::model方法支持傳入完整的模型類名 |
模型定義
定義一個User模型類:
namespace app\index\model;
use think\Model;
class User extends Model
{
}
默認主鍵為自(zi)動(dong)識別,如果需要指定,可(ke)以設置屬性(xing):
namespace app\index\model;
use think\Model;
class User extends Model
{
protected $pk = 'uid';
}
模型會自動對應數(shu)(shu)據表(biao),模型類的命(ming)名規則是除去表(biao)前(qian)綴的數(shu)(shu)據表(biao)名稱,采(cai)用(yong)駝峰法命(ming)名,并(bing)且首字母大寫,例如(ru):
| 模型名 | 約定對應數據表(假設數據庫的前綴定義是 think_) |
|---|---|
| User | think_user |
| UserType | think_user_type |
如果你的(de)(de)規(gui)則和上面的(de)(de)系統約定不符合,那么(me)需(xu)要設置(zhi)Model類的(de)(de)數據表名稱(cheng)屬性(xing),以確(que)保(bao)能夠(gou)找到對應(ying)的(de)(de)數據表。
設置數據表
如果你想指定數據表甚至(zhi)數據庫(ku)連接的話,可以使用(yong):
namespace app\index\model;
class User extends \think\Model
{
// 設置當前(qian)模(mo)型(xing)對(dui)應的完(wan)整數據表名(ming)稱
protected $table = 'think_user';
// 設置當前模(mo)型的(de)數據庫連接
protected $connection = [
// 數(shu)據庫類型(xing)
'type' => 'mysql',
// 服務器地址
'hostname' => '127.0.0.1',
// 數據庫(ku)名
'database' => 'thinkphp',
// 數據庫用戶(hu)名
'username' => 'root',
// 數據庫密碼
'password' => '',
// 數據庫(ku)編碼默認采用utf8
'charset' => 'utf8',
// 數據(ju)庫表前綴
'prefix' => 'think_',
// 數據庫調(diao)試模式
'debug' => false,
];
}
和連接數據庫的參數一樣,connection屬性(xing)的(de)值(zhi)也(ye)可以(yi)設置(zhi)為(wei)數(shu)(shu)據庫的(de)配置(zhi)參數(shu)(shu),而且也(ye)是(shi)官(guan)方(fang)(fang)推薦的(de)方(fang)(fang)式,這(zhe)樣可以(yi)避(bi)免把數(shu)(shu)據庫連(lian)接固化在代碼里面。
5.0不(bu)支持單獨設置當(dang)前(qian)模型的數據表前(qian)綴。
模型調用
模型(xing)類可以(yi)使用靜態(tai)調用或(huo)者實例(li)化調用兩種方式,例(li)如:
// 靜(jing)態調用(yong)
$user = User::get(1);
$user->name = 'thinkphp';
$user->save();
// 實例化(hua)模(mo)型
$user = new User;
$user->name= 'thinkphp';
$user->save();
// 使用 Loader 類實例化(單例)
$user = Loader::model('User');
// 或(huo)者使用助手函數`model`
$user = model('User');
$user->name= 'thinkphp';
$user->save();
實(shi)例化模(mo)型類主要用于調用模(mo)型的自定義方法,更(geng)多用法參(can)考(kao)后面的章節內容(rong)。
