ThinkPHP 模型基礎

2021-08-18 09:54:45 字數 2713 閱讀 3372

首先,新建乙個名為thinkphp的資料庫,裡面新建一張表,名為think_user。欄位有:id、user、email、date。

thinkphp內建了抽象資料庫訪問層,把不同的資料庫操作封裝起來,我們只需要使用公共的db類進行操作。無需針對不同的資料庫寫不同的**和底層實現,db類會自動呼叫相應的資料庫驅動來處理。

目前支援:mysql(包含mysqli)、sqlserver、pgsel、sqlite、oracle、ibase、mongo、pdo等。

連線資料庫

//mysql全域性配置定義

'db_type'=>'mysql',

'db_host'=>'localhost',

'db_user'=>'root',

'db_pwd'=>'root',

'db_name'=>'thinkphp',

'db_port'=>3306,

'db_prefix'=>'think_',

pdo方式:

'db_type'=>'mysql',

'db_host'=>'localhost',

'db_name'=>'thinkphp',

'db_user'=>'root',

'db_pwd'=>'root',

'db_prefix'=>'think_',

'db_dsn'=>'',

例項化模型

連線上資料庫後,我們需要從資料庫裡運算元據,就需要例項化模型類。tp中,提供了model基類處理,也可以使用m()方法。

比如基於usercontroller.class.php控制器:

<?php

namespace

home\controller;

usethink\controller;

usethink\model;

class

usercontroller

extends

controller

public

function

model

()}

model基類可以傳遞三個引數:

model([『模型名』],[『資料表字首』],[『資料庫連線資訊』]);

例項化model類,改變表字首

$user = new model('user','tp_');//是錯的。
例項化model類,定義資料庫連線資訊

$user = new model('user','think_','mysql://root:root@localhost/thinkphp');
thinkphp除錯工具,可以放在配置欄開啟:

'show_page_trace'=>true,
m()方法

使用model基類還需要匯入命名空間,而使用m()方法,則不需要。

例項化model類

<?php

namespace

home\controller;

usethink\controller;

// use home\model\usermodel;

//use think\model;

class

usercontroller

extends

controller

public

function

model

()}

d()方法

如果僅僅是使用增刪改查,那基於model的m()方法就夠用了。

如果有必要使用具體的模型類時,建議使用d()方法來例項化模型類。

<?php

namespace

home\controller;

usethink\controller;

usehome\model\usermodel;

//use think\model;

class

usercontroller

extends

controller

public

function

model

()}

字段定義

每個模型類操作每個對應資料表,大多數情況下系統會自動獲取當前資料表的字段資訊。當模型類第一次例項化時,系統會自動快取字段,並且永久快取,除非刪除執行時快取或者設定不快取。

這樣的好處是可以快速響應。tp中預設開啟字段快取。

字段快取檔案儲存在runtime/data/_fields目錄裡。開發階段,建議關閉快取。方法為:

//關閉快取字段

'db_fields_cache'=>fasle, //開啟除錯模式會自動關閉

ps:如果開啟了快取狀態,新增了字段,那可能新字段無法重新整理出來,必須刪除/data/_fields資料夾,重新獲取字段。

//檢視字段結構

var_dump($user->getdbfields());

模型例項化 thinkphp

當定義了模型之後,需要在操作中將模型例項化才能具體實現模型中的業務邏輯。不同的資料業務規則會有不同的模型定義,而在例項化模型的時候也可能不同。thinkphp 支援如下幾種例項化模型 例項化基礎模型類 例項化其他模型類 例項化使用者自定義模型類 例項化空模型類 thinkphp支援在沒有定義任何模型...

ThinkPHP 例項化模型

1.例項化基本模型 user new model s 引數為 表名,表字首,資料庫連線資訊 後2個已經在config.php中設定 user m s m方法 效果和new model相同 引數相同 data user select dump data 2.例項化使用者自定義模型 user new a...

ThinkPHP關聯模型詳解

在thinkphp中,關聯模型更類似一種mysql中的外來鍵約束,但是外來鍵約束更加安全,缺點卻是在寫sql語句的時候不方便,thinkphp很好得解決了這個問題.但是很多人不動關聯模型的意思.現在就寫個例子.讓大家理解thinkphp關聯模型的意思.環境描述 公司有乙個員工表think user,...