cakephp應(yīng)用開發(fā)第五章 模型——存取數(shù)據(jù)(9.有關(guān)save()方法的更多內(nèi)容)_第1頁(yè)
已閱讀1頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本文由麥可網(wǎng)整理,轉(zhuǎn)載請(qǐng)注明出處CakePHP應(yīng)用開發(fā):第五章模型——存取數(shù)據(jù)(9.有關(guān)save()方法的更多內(nèi)容)我們已經(jīng)了解了Save()方法可以用來保存和更新數(shù)據(jù)庫(kù)記錄。save()方法接受三個(gè)參數(shù):$data$validate和$fieldList。save(array$data=nullboolean$validate=truearray$fieldList=array())第一個(gè)參數(shù)$data是指要保存的數(shù)據(jù),$data是一

2、個(gè)有著特定格式的關(guān)聯(lián)數(shù)組,具體說來有如下結(jié)構(gòu):Array([模型名]=Array([字段名1]=值1[字段名2]=值2)當(dāng)然,數(shù)組中沒有模型名這個(gè)鍵也可以。Array([字段名1]=值1[字段名2]=值2)在這種情況下,數(shù)據(jù)會(huì)保存在調(diào)用save()方法的模型所對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中。我們已經(jīng)知道,Save()方法可以用來執(zhí)行保存或者更新操作。他們唯一區(qū)別就是在更新操作時(shí),$data數(shù)組中定義有“id”鍵。而進(jìn)行保存操作時(shí),數(shù)組中不應(yīng)該包含id

3、“??傊?,如果我們正確的使用了表單助手來創(chuàng)建網(wǎng)頁(yè)表格,那么我們就不用考慮他們的結(jié)構(gòu)。表單數(shù)據(jù)已經(jīng)格式化好了,可以不用做任何多余的修改就可以保。但是在某些情況下,最好還是要了解一下$data的特殊結(jié)構(gòu)。(比如,要保存的數(shù)據(jù)并不是由網(wǎng)頁(yè)表單發(fā)送而來。)我們可能需要手動(dòng)存儲(chǔ)他們。如果我們不想在向數(shù)據(jù)庫(kù)中保存數(shù)據(jù)的時(shí)候使用CakePHP的驗(yàn)證機(jī)制,第二個(gè)參數(shù)$validate可以設(shè)置成false(數(shù)據(jù)的驗(yàn)證我們會(huì)在這個(gè)章節(jié)后半部分討論)。$va

4、lidate默認(rèn)值是true,這會(huì)對(duì)接受的數(shù)據(jù)強(qiáng)行進(jìn)行驗(yàn)證。第三個(gè)參數(shù)$fieldList是一個(gè)包含有多個(gè)字段名的數(shù)組。如果設(shè)置有$fieldList參數(shù),那么Save函數(shù)只會(huì)將數(shù)據(jù)保存進(jìn)$fieldList指定的字段中去。這意味著,那些不在$fieldList數(shù)組中出現(xiàn)的字段在保存時(shí)會(huì)被忽略掉。當(dāng)你想要你的數(shù)據(jù)庫(kù)免于用戶的意外侵?jǐn)_時(shí),這招尤其有用如果由于某些原因,數(shù)據(jù)未能成功的保存,或者未能通過驗(yàn)證規(guī)則時(shí),Save()方法返回fals

5、e。當(dāng)保存完成之后,模型$id屬性會(huì)被設(shè)置成最新創(chuàng)建的記錄所對(duì)應(yīng)的id。因此,如果數(shù)據(jù)保存成功,我們可以獲得最后插入的記錄的id,方法如下:$thisBooksave($data)$last__id=$thisBookid更新單個(gè)字段:有時(shí),我們可能需要更新記錄中的某個(gè)字段。CakePHP提供了一個(gè)名為saveField()模型函數(shù)來完成此類任務(wù)。下面這個(gè)代碼片段展示了如何使用saveField()方法來更新某個(gè)字字段的值:$thisB

6、ookid=9$thisBooksaveField(titleNewTitle)本文由麥可網(wǎng)整理,轉(zhuǎn)載請(qǐng)注明出處上面這段代碼將id為9的記錄的“標(biāo)題”字段值更改成了NewTitle。在我們調(diào)用saveField()之前,我們需要設(shè)置模型的屬性$id,以指定要更新哪條記錄。saveField()方法接受三個(gè)參數(shù)saveField(string$fieldNamestring$fieldValue$validate=false)第一個(gè)參數(shù)$

7、fieldName是指要修改的字段名。第二個(gè)參數(shù)$fieldValue指定了字段的新值。第三個(gè)參數(shù)$validate用來開啟或者關(guān)閉驗(yàn)證規(guī)則。當(dāng)使用saveField()函數(shù)時(shí),驗(yàn)證規(guī)則默認(rèn)是關(guān)閉的、批量更新在某些情況下,我們可能想一次更新多條記錄。CakePHP提供一個(gè)叫作updateAll()的模型方法,針對(duì)的就是這種情況。假設(shè),我們?cè)赽ooks表中有一個(gè)名為starred的字段。現(xiàn)在我們想把所有由DavidBarnes寫的書的st

8、arred字段值設(shè)置為1。我們可以像下面這樣使用updateAll()方法。$thisBookupdateAll(array(Book.auth_name=“DavidBarnes“)array(Book.starred=1))這個(gè)方法的形式如下:updateAll(array$conditionsarray$fields)第一個(gè)參數(shù)是條件數(shù)組,用來確定我們要批量更新的記錄所需要符合的條件。$conditions數(shù)組的格式與find()

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論