日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php视图查询的优势,ThinkPHP视图查询详解

發(fā)布時間:2024/9/27 php 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php视图查询的优势,ThinkPHP视图查询详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

搜索熱詞

ThinkPHP提供的視圖查詢應用功能十分強大,用戶利用視圖查詢功能可以將多個數(shù)據(jù)表的字段內(nèi)容按需要進行指定和篩選,組織成一個基于這些數(shù)據(jù)表的視圖模型,然后就可以通過該模型直接進行多表聯(lián)合查詢,非常方便和簡單。

例如在項目中,我們定義有三個表:

user 用戶基礎(chǔ)表,

user_info 用戶詳細信息表,

dept 部門分類表

現(xiàn)在我們需要獲取某個用戶信息,

該信息要包括用戶的帳號名稱和相關(guān)資料與及所在部門的名稱,

這時候我們可以利用視圖查詢進行處理。

下面舉例加以說明:

1.構(gòu)建一個新項目并進行相關(guān)配置(可參考前面的教程,這里省略)

2.創(chuàng)建一個數(shù)據(jù)庫tpview,并添加這三個表

(1) 用戶表

sql;">

CREATE TABLE `think_user` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID編號',`name` varchar(20) NOT NULL COMMENT '帳戶',`password` varchar(32) NOT NULL COMMENT '密碼',`dept_id` smallint(6) unsigned NOT NULL,`status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '開放狀態(tài)',PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='會員表' AUTO_INCREMENT=2 ;

INSERT INTO `think_user` (`id`,`name`,`password`,`dept_id`,`status`) VALUES

(1,'zzguo28','123456',2,1);

(2)用戶信息表

sql;">

CREATE TABLE `think_user_info` (

`user_id` int(11) NOT NULL COMMENT '用戶id',`nick_name` varchar(30) NOT NULL COMMENT '用戶昵稱',`email` varchar(100) NOT NULL COMMENT '郵箱地址',`address` varchar(100) NOT NULL COMMENT '詳細地址',`gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性別',`mobile` varchar(100) NOT NULL COMMENT '手機號碼',`telephone` varchar(100) NOT NULL COMMENT '電話號碼',KEY `user_id` (`user_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用戶信息表';

INSERT INTO `think_user_info` (`user_id`,`nick_name`,`email`,`address`,`gender`,`mobile`,`telephone`) VALUES

(1,'國','zzguo28@163.com','TP路think街1.6號',1,'12345678901','123456');

(3) 部門分類表

sql;">

CREATE TABLE `think_dept` (

`id` smallint(3) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL,PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `think_dept` (`id`,`name`) VALUES

(1,'開發(fā)部'),(2,'銷售部'),(3,'財務部');

3.在項目/Lib/Model下創(chuàng)建這三個表的基礎(chǔ)模型Model

本示例沒涉及到驗證等其它功能,所以只要簡單定義測可,例如

PHP;">

其實視圖模型對應的數(shù)據(jù)表并非一定要有相應的的基礎(chǔ)模型,但是建議您創(chuàng)建,這樣單表和視圖都可以操作。

4.創(chuàng)建視圖模型,代碼如下,詳細注解見其后:

(附注:最新svn上已增加動態(tài)擴展模型功能,使用新版需要將protected屬性改為public屬性,建議使用動態(tài)擴展功能去使用視圖查詢,而不再是本教程的繼承方式。那樣使用會更靈活。)

PHP;">

array('id','name','_as'=>'u','_type'=>'left'),'UserInfo' =>array('email','mobile','_as'=>'ui','_on'=>'ui.user_id=u.id'),'Dept' =>array('name'=>'dept','_on'=>'u.dept_id=Dept.id'),);

}

?>

對上述代碼解釋如下:

在第2行代碼中,由于自TP1.6版開始已將視圖查詢分離出原Model類,因此這里需要使用import方法引入了視圖模型類。

第3行代碼中,定義了該模型名稱為Userviewmodel,視圖模型的名稱Model前的命名是隨意的,只是為了有別于其它模型,通常我們會以xxxviewmodel這樣的方式去命名。并且一定要繼承viewmodel。(ThinkPHP1.6版無需再設置模型的viewmodel屬性為true,只要繼承viewmodel則可)

第4行代碼$viewFields 屬性表示視圖模型包含的字段,每個元素定義了各個數(shù)據(jù)表或者模型所需的字段。

格式是

array('所需字段','_as'=>'別名定義','_on'=>'篩選條件','_type'=>'指定join類型,支持right,inner,left三種'),);

注意到第7行代碼中的'name'=>'dept',因為User模型里面已經(jīng)存在了一個name字段,所以我們通過這種方式把Dept模型的name字段映射為dept字段,如果有多個字段,可以使用同樣的方式添加。

定義完畢后,我們在Action中進行測試,代碼如下

PHP;">

where($where)->find());

dump($dao->getLastsql());

}

}

?>

然后訪問該操作,可以看到我們成功取得所需的查詢內(nèi)容:

array(5) {

["id"] => string(1) "1"

["name"] => string(7) "zzguo28"

["email"] => string(17) "zzguo28@163.com"

["mobile"] => string(11) "12345678901"

["dept"] => string(9) "銷售部"

}

}

并可以看到使用的sql如下

sql;">

"SELECT u.id AS id,u.name AS name,ui.email AS email,ui.mobile AS mobile,Dept.name AS dept FROM think_user u LEFT JOIN think_user_info ui ON ui.user_id=u.id JOIN think_dept Dept ON u.dept_id=Dept.id WHERE ( u.id = 1 ) LIMIT 1 "

視圖模型在查詢上和普通單表并沒有多大分別,可以使用我們所熟悉的各種連貫操作,例如order,limit等等。

總結(jié)

以上是編程之家為你收集整理的ThinkPHP視圖查詢詳解全部內(nèi)容,希望文章能夠幫你解決ThinkPHP視圖查詢詳解所遇到的程序開發(fā)問題。

如果覺得編程之家網(wǎng)站內(nèi)容還不錯,歡迎將編程之家網(wǎng)站推薦給程序員好友。

本圖文內(nèi)容來源于網(wǎng)友網(wǎng)絡收集整理提供,作為學習參考使用,版權(quán)屬于原作者。

總結(jié)

以上是生活随笔為你收集整理的php视图查询的优势,ThinkPHP视图查询详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。