中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

ThinkPHP視圖查詢?cè)斀?/h1>

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

例如在項(xiàng)目中,我們定義有三個(gè)表:

user          用戶基礎(chǔ)表,
user_info   用戶詳細(xì)信息表,
dept          部門分類表

現(xiàn)在我們需要獲取某個(gè)用戶信息,
該信息要包括用戶的帳號(hào)名稱和相關(guān)資料與及所在部門的名稱,
這時(shí)候我們可以利用視圖查詢進(jìn)行處理。

下面舉例加以說(shuō)明:

1.構(gòu)建一個(gè)新項(xiàng)目并進(jìn)行相關(guān)配置(可參考前面的教程,這里省略)
2.創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)tpview,并添加這三個(gè)表
(1) 用戶表

CREATE TABLE `think_user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID編號(hào)', `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='會(huì)員表' AUTO_INCREMENT=2 ;INSERT INTO `think_user` (`id`, `name`, `password`, `dept_id`, `status`) VALUES(1, 'zzguo28', '123456', 2, 1);

(2)用戶信息表

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 '詳細(xì)地址', `gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性別', `mobile` varchar(100) NOT NULL COMMENT '手機(jī)號(hào)碼', `telephone` varchar(100) NOT NULL COMMENT '電話號(hào)碼', 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, '國(guó)', 'zzguo28@163.com', 'TP路think街1.6號(hào)', 1, '12345678901', '123456');

(3) 部門分類表

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, '財(cái)務(wù)部');

3.在項(xiàng)目/Lib/Model下創(chuàng)建這三個(gè)表的基礎(chǔ)模型Model
  本示例沒涉及到驗(yàn)證等其它功能,所以只要簡(jiǎn)單定義測(cè)可,例如

 <?php  class UserModel extends Model {  } ?>

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

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

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

<?phpimport('ViewModel');class UserViewModel extends ViewModel{  protected $viewFields = array(    'User'   =>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'),  );}?>

對(duì)上述代碼解釋如下:

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

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

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

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

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

定義完畢后,我們?cè)贏ction中進(jìn)行測(cè)試,代碼如下

<?phpclass IndexAction extends Action{  public function index(){    $dao = D('UserView');    $where['u.id'] = 1;    dump($dao->where($where)->find());    dump($dao->getLastSql());  }}?>

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

array(1) { [0] => array(5) {  ["id"] => string(1) "1"  ["name"] => string(7) "zzguo28"  ["email"] => string(17) "zzguo28@163.com"  ["mobile"] => string(11) "12345678901"  ["dept"] => string(9) "銷售部" }}

并可以看到使用的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等等。

php技術(shù)ThinkPHP視圖查詢?cè)斀?/a>,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美精品一区二区免费 | 国产成人精品久久二区二区 | 天堂综合 | 91精品久久久久久久久久入口 | 精品三区 | 久久精品网 | 免费成人在线网 | 在线免费观看日本视频 | 国产成人久久精品一区二区三区 | 亚洲精品久久久久久久久久久 | 日韩在线视频一区二区三区 | 欧美色综合一区二区三区 | 久久久综合久久 | 天天曰天天曰 | 欧美久 | 午夜男人天堂 | 天天干天天想 | 国产三级一区二区 | 久久久久国产精品免费免费搜索 | 黄色日批视频 | 91天堂 | 一区二区三区四区国产 | 免费美女网站 | 欧美日韩精品久久久免费观看 | 曰批视频在线观看 | 欧美成人精品一区二区男人看 | 日本三级精品 | 欧美一级艳情片免费观看 | 羞羞视频一区二区 | 国产精品久久久久久久久久久新郎 | 国产精品成人一区 | 盗摄精品av一区二区三区 | 亚洲精品日韩在线 | 久草a√ | 91色啪| 久久综合av | 午夜在线视频一区二区三区 | 中文字幕在线观看一区 | 日韩欧美一级片 | 欧美视频在线播放 | 国产综合久久 |