十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
thinkphp的模型,默認情況是一個數(shù)據(jù)表對應(yīng)一個Model類.
網(wǎng)站建設(shè)、成都網(wǎng)站制作介紹好的網(wǎng)站是理念、設(shè)計和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計理念、多方位的設(shè)計風(fēng)格、經(jīng)驗豐富的設(shè)計團隊。提供PC端+手機端網(wǎng)站建設(shè),用營銷思維進行網(wǎng)站設(shè)計、采用先進技術(shù)開源代碼、注重用戶體驗與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
創(chuàng)建 model類文件的方法是:
在Model文件夾下創(chuàng)建 XxxModel.class.php
例如:數(shù)據(jù)表名稱 test
則在Model文件夾下創(chuàng)建類文件:TestModel.class.php
可以用下面兩種方法去創(chuàng)建一個數(shù)據(jù)表model對象:
第一種:$Test = D('Test')
第二種:$Test = new Model('Test')
如果你的模型是沒有確定的數(shù)據(jù)表可以對應(yīng)(或者說需要操作多個數(shù)據(jù)表),在這種情況下,
TP提供了一個機制來解決這樣的問題,尤其是你需要經(jīng)常使用原生SQL的時候,這個機制會非常有幫助。
下面來看一段代碼:代碼:
$Model = new Model();
$list = $Model-query('select * from think_user where status=1');
當(dāng)我們直接實例化Model基類的時候,是不會進行任何數(shù)據(jù)庫的連接的,也不會緩存任何數(shù)據(jù)表的字段信息,所以這個模型更加純凈一點,開銷也相當(dāng)比較小。
當(dāng)然,并不是說,在這種方式下就只能使用原生查詢,你可以很好的利用新版的連貫操作功能來查詢數(shù)據(jù)。例如:代碼:
$Model = D(); // 和上面的new Model()等效
// TP的連貫操作的優(yōu)勢之一就是可以動態(tài)設(shè)置要查詢的數(shù)據(jù)表
$list = $Model-field('id,name')-table('think_user')-where('status=1')-findall();
mysql
有一個默認的數(shù)據(jù)庫,叫做information_schema
連上這個庫,執(zhí)行下面的語句(你自己那可能的改下下面的sql)
//table_schema
是你的數(shù)據(jù)庫名字
table_name是表名
select
*
from
tables
where
table_schema
=
'storage'
and
table_name
like
'product%'
你看看庫中這個表結(jié)構(gòu)就明白了,呵呵
目錄結(jié)構(gòu)(主要三個文件)
1.application\index\controller\index.php
2.application\index\model\UserModel.php
3.application\common.php
文件類容
1.application\index\controller\index.php
控制器,和之前沒什么變化,命名空間比較好用了,要注意命名空間
?php
namespace app\index\controller;
use think\Controller;
use app\index\model\UserModel;
class Login extends Base
{
public function index()
{
$User_model = new UserModel(); // 實例化用戶模型
$userdatas = $User_model-getAllUserDatas(); // 獲取數(shù)據(jù)
var_dump($userdatas);
}
}
復(fù)制代碼
2.application\index\model\UserModel.php
模型,我將數(shù)據(jù)庫鏈接也放到這里
?php
namespace app\index\model;
use think\Model;
\think\Loader::controller('common/member', 'event'); // 加載common.php的函數(shù)
class UserModel extends Model
{
// 設(shè)置當(dāng)前模型對應(yīng)的完整數(shù)據(jù)表名稱
protected $table = 'user';
// 設(shè)置當(dāng)前模型的數(shù)據(jù)庫連接
protected $connection = [
// 數(shù)據(jù)庫類型
'type' = 'mysql',
// 數(shù)據(jù)庫連接DSN配置
'dsn' = '',
// 服務(wù)器地址
'hostname' = '127.0.0.1',
// 數(shù)據(jù)庫名
'database' = 'mydb',
// 數(shù)據(jù)庫用戶名
'username' = 'root',
// 數(shù)據(jù)庫密碼
'password' = '123',
// 數(shù)據(jù)庫連接端口
'hostport' = '3306',
// 數(shù)據(jù)庫連接參數(shù)
'params' = [],
// 數(shù)據(jù)庫編碼默認采用utf8
'charset' = 'utf8',
// 數(shù)據(jù)庫表前綴
'prefix' = '',
];
// 獲取所有用戶的所有數(shù)據(jù)
public function getAllUserDatas()
{
$more_datas = $this-select(); // 查詢所有用戶的所有字段資料
if (empty($more_datas)) { // 判斷是否出錯
return false;
}
return tp5ModelTransfer($more_datas); // 返回修改后的數(shù)據(jù)
}
}
復(fù)制代碼
3.application\common.php
公共函數(shù)文件,放置這個轉(zhuǎn)換功能的,主要代碼,其實就一點點
?php
// 應(yīng)用公共文件
function tp5ModelTransfer($array)
{
if (empty($array) || !count($array)) {
return false;
}
foreach ($array as $value) {
$datarray[] = $value-toArray();
}
return $datarray;
}
沒有默認的數(shù)據(jù)庫名稱的,都是要自己創(chuàng)建才會有的,
如果你是下載的php源碼,那一般源碼里有sql文件交,或為 .sql后綴的文件名 為數(shù)據(jù)庫;
那你通過phpmyadmin 導(dǎo)入.sql檔到mysql數(shù)據(jù)庫里,至于是什么數(shù)據(jù)庫名稱,自己取的;
你要具備會使用phpmyadmin基本知識!
如果是虛擬主機:數(shù)據(jù)庫要先創(chuàng)建 然后用戶名 密碼 自己的
如果是自己的電腦: 那么就可以直接隨便輸數(shù)據(jù)庫 ,用戶名 密碼還是要對的
這個是不用必須的,可以任意命名。只是在tp里面
如果你的model命名是用數(shù)據(jù)表名字命名的話,操作的時候直接相當(dāng)操作這個表。自己命名的model,自己需要指定下自己操作的表名就OK啦,不是必須的
。多看看官方手冊,還是挺不錯的