《ThinkPHP用戶》PPT課件.ppt_第1頁
《ThinkPHP用戶》PPT課件.ppt_第2頁
《ThinkPHP用戶》PPT課件.ppt_第3頁
《ThinkPHP用戶》PPT課件.ppt_第4頁
《ThinkPHP用戶》PPT課件.ppt_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

講師:馬明,用戶管理 ThinkPHP模型定義與CURD,概述,模型定義 自動(dòng)驗(yàn)證、字段映射和自動(dòng)完成 CURD操作,,創(chuàng)建數(shù)據(jù)自動(dòng)驗(yàn)證,protected $_validate = array( array(verify,require,驗(yàn)證碼必須!), /默認(rèn)情況下用正則進(jìn)行驗(yàn)證 array(name,帳號(hào)名稱已經(jīng)存在!,0,unique,1), / 在新增的時(shí)候驗(yàn)證name字段是否唯一 array(value,array(1,2,3),值的范圍不正確!,2,in), / 當(dāng)值不為空的時(shí)候判斷是否在一個(gè)范圍內(nèi) array(repassword,password,確認(rèn)密碼不正確,0,confirm), / 驗(yàn)證確認(rèn)密碼是否和密碼一致 array(password,checkPwd,密碼格式不正確,0,function), / 自定義函數(shù)驗(yàn)證密碼格式 );,,創(chuàng)建數(shù)據(jù)字段映射,protected $_map = array( name = username, mail = email, );,,創(chuàng)建數(shù)據(jù)自動(dòng)完成,protected $_auto = array ( array(status,1), / 新增的時(shí)候把status字段設(shè)置為1 array(password,md5,1,function) / 對(duì)password字段在新增的時(shí)候使md5函數(shù)處理 array(name,getName,1,callback) , / 對(duì)name字段在新增的時(shí)候回調(diào)getName方法 array(create_time,time,2,function), / 對(duì)create_time字段在更新的時(shí)候?qū)懭氘?dāng)前時(shí)間戳 );,,CURD操作,ThinkPHP提供了靈活和方便的數(shù)據(jù)操作方法,對(duì)數(shù)據(jù)庫(kù)操作的四個(gè)基本操作(CURD):創(chuàng)建、更新、讀取和刪除的實(shí)現(xiàn)是最基本的,也是必須掌握的,在這基礎(chǔ)之上才能熟悉更多實(shí)用的數(shù)據(jù)操作方法。,,創(chuàng)建數(shù)據(jù),第一種方法: $模型-add($data); 第二種方法: $模型-data($data)-add(); 第三種方法 $模型-create(); $模型-add();,,創(chuàng)建用戶,,讀取數(shù)據(jù),1.讀取全部數(shù)據(jù) $模型-select(); $模型-findAll(); 2.讀取一條記錄 $模型-find(); 3.讀取某個(gè)字段的值 $模型-getField(); 當(dāng)只有一個(gè)字段的時(shí)候,始終返回一個(gè)值 如果傳入多個(gè)字段的話,可以返回一個(gè)關(guān)聯(lián)數(shù)組,,用戶列表,,查詢語言,普通查詢 區(qū)間查詢 組合查詢 復(fù)合查詢 統(tǒng)計(jì)查詢 定位查詢 SQL查詢 動(dòng)態(tài)查詢,,查詢語言普通查詢,一、使用數(shù)組作為查詢條件 $User = M(“User“); / 實(shí)例化User對(duì)象 $conditionname = thinkphp; / 把查詢條件傳入查詢方法 $User-where($condition)-select();,,查詢語言普通查詢,二、使用查詢表達(dá)式 $map字段名 = array(表達(dá)式, 查詢條件); 表達(dá)式不分大小寫,支持的查詢表達(dá)式有下面幾種,分別表示的含義是: EQ:等于(=) 例如:$mapid = array(eq,100); NEQ: 不等于(!=) 例如:$mapid = array(neq,100); GT:大于() 例如:$mapid = array(gt,100); EGT:大于等于(=) 例如:$mapid = array(egt,100); LT:小于() 例如:$mapid = array(lt,100); ELT: 小于等于(=) 例如:$mapid = array(elt,100); LIKE: 同sql的LIKE 例如:$mapname = array(like,thinkphp%); NOT BETWEEN: 例如:$mapid = array(between,1,8); $mapid = array(between,array(1,8); NOT IN: 例如:$mapid = array(not in,1,5,8); $mapid = array(not in,array(1,5,8); EXP:表達(dá)式 例如:$mapid = array(in,1,3,8); $mapid = array(exp, IN (1,3,8) );,如果配置了DB_LIKE_FIELDS參數(shù)的話,某些字段也會(huì)自動(dòng)進(jìn)行模糊查詢。例如設(shè)置了: DB_LIKE_FIELDS=title|content的話,使用$maptitle = thinkphp; 查詢條件就會(huì)變成 title like %thinkphp%,,查詢語言區(qū)間查詢,ThinkPHP支持對(duì)某個(gè)字段的區(qū)間查詢,例如: $mapid = array(array(gt,1),array(lt,10) ; 得到的查詢條件是: (id 1) AND (id 3) OR (id 3) 最后一個(gè)可以是AND、 OR或者 XOR運(yùn)算符,如果不寫,默認(rèn)是AND運(yùn)算。 區(qū)間查詢的條件可以支持普通查詢的所有表達(dá)式,也就是說類似LIKE、GT和EXP這樣的表達(dá)式都可以支持。另外區(qū)間查詢還可以支持更多的條件,只要是針對(duì)一個(gè)字段的條件都可以寫到一起,例如: $mapname = array(array(like,%a%), array(like,%b%), array(like,%c%), ThinkPHP,or); 最后的查詢條件是: (name LIKE %a%) OR (name LIKE %b%) OR (name LIKE %c%) OR (name = ThinkPHP),,查詢語言組合查詢,如果進(jìn)行多字段查詢,那么字段之間的默認(rèn)邏輯關(guān)系是 邏輯與 AND,但是用下面的規(guī)則可以更改默認(rèn)的邏輯判斷,例如下面的查詢條件: $User = M(“User“); / 實(shí)例化User對(duì)象 $mapid = array(neq,1); $mapname = ok; $User-where($map)-select(); 得到的查詢條件是:( id != 1 ) AND ( name = ok ) 如果添加了下面的查詢條件: $map_logic = or; 現(xiàn)在的查詢條件就變?yōu)椋?( id != 1 ) OR ( name = ok ) 數(shù)組條件還可以和字符串條件混合使用,例如: $User = M(“User“); / 實(shí)例化User對(duì)象 $mapid = array(neq,1); $mapname = ok; $map_string = status=1 AND score10; $User-where($map)-select(); 最后得到的查詢條件就成了: ( id != 1 ) AND ( name = ok ) AND ( status=1 AND score10 ) 新版還可以支持一種特殊的條件查詢,前提是簡(jiǎn)單的條件相等判斷。 $map_query = status=1 得到的查詢條件是:status = 1 OR score = 100,,查詢語言復(fù)合查詢,例如: $wherename = array(like, %thinkphp%); $wheretitle = array(like, %thinkphp%); $where_logic = or; $map_complex = $where; $mapid = array(gt,1); 查詢條件是 ( id 1) AND ( ( name like %thinkphp%) OR ( title like %thinkphp%) ) 復(fù)合查詢使用了_complex作為子查詢條件來定義,配合之前的查詢方式,可以非常靈活的制定更加復(fù)雜的查詢條件 相同的查詢條件有多種表達(dá)形式,例如上面的查詢條件可以改成: $whereid = array(gt,1); $where_string = (name like “%thinkphp%“) OR ( title like “%thinkphp“) ; 最后生成的SQL語句是一致的。,,查詢語言統(tǒng)計(jì)查詢,$User = M(“User“); / 實(shí)例化User對(duì)象 獲取用戶數(shù): $userCount = $User-count(); 獲取用戶的最大積分: $maxScore = $User-max(score); 獲取積分大于0的用戶的最小積分: $minScore = $User-where(score0)-min(score); 獲取用戶的平均積分: $avgScore = $User-avg(score); 統(tǒng)計(jì)用戶的總成績(jī): $sumScore = $User-sum(score); 并且所有的統(tǒng)計(jì)查詢均支持連貫操作的使用,,查詢語言定位查詢,ThinkPHP支持定位查詢,可以使用getN方法直接返回查詢結(jié)果中的某個(gè)位置的記錄。例如: 獲取符合條件的第3條記錄: $User-where(score0)-order(score desc)-getN(2); 獲取符合條件的最后第二條記錄: $User- where(score80)-order(score desc)-getN(-2); 獲取第一條記錄: $User-where(score80)-order(score desc)-first(); 獲取最后一條記錄: $User-where(score80)-order(score desc)-last();,,查詢語言SQL查詢,1、query方法 query方法是用于sql查詢操作,和select一樣返回?cái)?shù)據(jù)集,例如: $Model = new Model() / 實(shí)例化一個(gè)model對(duì)象 沒有對(duì)應(yīng)任何數(shù)據(jù)表 $Model-query(“select * from think_user where status=1“); 2、execute方法 用于更新和寫入數(shù)據(jù)的sql操作,返回影響的記錄數(shù),例如: $Model = new Model() / 實(shí)例化一個(gè)model對(duì)象 沒有對(duì)應(yīng)任何數(shù)據(jù)表 $Model-execute(“update think_user set name=thinkPHP where status=1“);,,查詢語言動(dòng)態(tài)查詢,借助PHP5語言的特性,ThinkPHP實(shí)現(xiàn)了動(dòng)態(tài)查詢。該查詢方式針對(duì)數(shù)據(jù)表的字段進(jìn)行查詢。例如,User對(duì)象擁有id,name,email,address 等屬性,那么我們就可以使用下面的查詢方法來直接根據(jù)某個(gè)屬性來查詢符合條件的記錄。 $user = $User-getByName(liu21st); $user = $User-getByEmail(); $user = $User-getByAddress(中國(guó)深圳); 暫時(shí)不支持多數(shù)據(jù)字段的動(dòng)態(tài)查詢方法,請(qǐng)使用find方法和select方法進(jìn)行查詢。ThinkPHP還提供了另外一種動(dòng)態(tài)查詢方式,就是獲取符合條件的前N條記錄。例如,我們需要獲取當(dāng)前用戶中積分大于0,積分最高的前5位用戶 : $User- where(score80)-order(score desc)-top5(); 要獲取積分的前8位可以改成: $User- where(score80)-order(score desc)-top8();,,讀取數(shù)據(jù)連貫操作,查詢一個(gè)User表的滿足性別為1的前10條記錄,并希望按照用戶的創(chuàng)建時(shí)間排序 $User-where(sex=1)-order(create_time)-limit(10)-select(); 除了select方法必須放到最后一個(gè)外,其他的連貫操作的方法調(diào)用順序沒有先后 $User-order(create_time)-where(sex=1)-limit(10)-select(); 如果不使用連貫方法 $User-select(array(order=create_time, where=sex=1, limit=10); 其他方法也可以使用連貫操作 $User-where(id=1)-field(id,username,email)-find(); $User-where(status=1 and id=1)-delete();,,更新數(shù)據(jù),第一種方法: $模型-where(id=1)-s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論